dubbo中扩展点adapter实现
dubbo中扩展点加载器,extensionloader中有个方法getAdaptiveExtension,就是获得这个扩展点的adptive实现,像大多数这个类中方法一样,先会触发加载扩展点所有类信息。然后在去创建这个类的adaptive类。
生成这个扩展点对应的adaptive类,有两种方式,一种是看扩展点所有实现,是有有某个实现带有,Adaptive注解,如果有则这个类就为这个扩展点的Adaptive类,如果没有,就会利用,javaassist技术动态生成,代码,编译生成,这个扩展点的对应的Adaptive类。
基本逻辑就是,会为这个扩展点接口的所有,带有Adaptive标签的,方法自动生成转接代码,其他方法通过抛出exception关闭,代码的逻辑基本是,
1:先通过反射机制,来获得将要被adaptive方法的所有参数,抛出exception,返回值
2:获得url局部参数
2.1:如果有参数直接为URL类型,则直接就使用这个参数
2.2:如果没有参数,则看是否带这个url属性的参数。
3:获得key值,先取得adaptive这注解的值,如为空,则直接使用扩展点接口的点分割名。
4:判断是否有com.alibaba.dubbo.rpc.Invocation参数类
5:获得通过确定的key去获得对应的扩展实现实例。
6:直接调用扩展点实现实例的方法
相关推荐
ATenhong 2020-10-15
supperme 2020-09-08
doctorvian 2020-08-02
aNian 2020-08-01
kongjunlongaa 2020-06-29
Fightingxr 2020-06-26
whileinsist 2020-06-24
doctorvian 2020-06-16
XuNeely 2020-06-16
wangyangsoftware 2020-06-16
大步流星 2020-06-16
aNian 2020-06-16
gaoyongstone 2020-06-16
MartellJenkins 2020-06-11
范群松 2020-06-11
Fightingxr 2020-06-08
XuNeely 2020-06-07
大步流星 2020-06-05