Dubbo的Javassist代理

Javassist 生成动态代理可以使用两种方式,一种使用代理工厂创建,和普通的JDK动态代理和 CGLIB类似,另一种则可以使用 动态代码创建。

Dubbo无论是生产端的暴露服务创建的invoker代理还是消费端创建的代理调用,都会需要经过代理。而Dubbo中默认采用javassit代理,动态的在内存当中生成所代理类的字节码,来完成代理的功能。

Dubbo的Javassist代理_第1张图片

可以看到,javassit的代理工厂类只实现了两个方法,恰恰是上文所说的消费端和生产端两个流程中的代理实现。以getProxy()为例子,也就是生成消费端的代理为例子。

getProxy()需要两个参数,一个是所需要被代理的类invoker,一个是代理类所实现的接口,而这些接口中所定义的方法,就是需要通过被代理达到远程调用生产端的作用。

首先,Dubbo通过getProxy()方法传入所要代理的接口所组成的数组。

Dubbo的Javassist代理_第2张图片

 

 

 

 

 

 

 

 

你可能感兴趣的:(Rpc框架dubbo)