其他分享
首页 > 其他分享> > 手写RPC框架(二)加入动态代理

手写RPC框架(二)加入动态代理

作者:互联网

手写RPC框架(二)加入动态代理

如果没有动态代理,远程调用时,需要对每个类都要建立代理,这样会导致代码十分冗余,我们通过Java中Proxy,动态的构建类,来实现AOP的功能。

public static Object newProxyInstance(ClassLoader loader,Class<?>[] interfaces, InvocationHandler h)

通过此方法,我们通过传入类加载器,接口信息以及InvocationHandler就可以为Consumer创建代理类

对于InvocationHandler,相当于AOP中的拦截器,所有调用代理类的方法都会被拦截下来转到InvocationHandler中的invoke中执行。因此,我们在Consumer实现时,需要在invoke方法中,将类的调用信息(类名,方法名、参数等)序列化后打包,通过socket发送给Provider来执行远程过程调用。

通过动态代理,我们可以很容易在代码执行阶段构建出代理对象,实现一些日志记录,时间统计等功能,同样在RPC框架中,动态代理使得我们不需要为每个类都创建一个代理类,让RPC框架更加通用化。

Java动态代理

代码地址 (v2.0)

标签:methodName,String,框架,Object,代理,public,RPC,手写,Class
来源: https://www.cnblogs.com/iven98/p/15484901.html