Java知识分享网 - 轻松学习从此开始!    

Java知识分享网

Java1234官方群25:java1234官方群17
Java1234官方群25:838462530
        
SpringBoot+SpringSecurity+Vue+ElementPlus权限系统实战课程 震撼发布        

最新Java全栈就业实战课程(免费)

springcloud分布式电商秒杀实战课程

IDEA永久激活

66套java实战课程无套路领取

锋哥开始收Java学员啦!

Python学习路线图

锋哥开始收Java学员啦!
当前位置: 主页 > Java文档 > Java基础相关 >

深度解析Dubbo的可扩展机制SPI源码:从理论到实践,打造高效、稳定的分布式服务框架 PDF 下载


分享到:
时间:2024-01-31 11:03来源:http://www.java1234.com 作者:转载  侵权举报
深度解析Dubbo的可扩展机制SPI源码:从理论到实践,打造高效、稳定的分布式服务框架
失效链接处理
深度解析Dubbo的可扩展机制SPI源码:从理论到实践,打造高效、稳定的分布式服务框架 PDF 下载




 
 
 
 
相关截图:



 
主要内容:
 
 

ExtensionLoader表示某个接⼝的扩展点加载器,可以⽤来加载某个扩展点实例。
在ExtensionLoader中除开有上⽂的static的Map外,还有两个⾮常重要的属性:
1. Class<?> type:表示当前ExtensionLoader实例是哪个接⼝的扩展点加载器
2. ExtensionFactory objectFactory:扩展点⼯⼚(对象⼯⼚),可以获得某个对象
ExtensionLoader和ExtensionFactory的区别在于:
1. ExtensionLoader最终所得到的对象是Dubbo SPI机制产⽣的
2. ExtensionFactory最终所得到的对象可能是Dubbo SPI机制所产⽣的,也可能是从Spring容器中所获
得的对象
在ExtensionLoader中有三个常⽤的⽅法:
1. getExtension("dubbo"):表示获取名字为dubbo的扩展点实例
2. getAdaptiveExtension():表示获取⼀个⾃适应的扩展点实例
3. getActivateExtension(URL url, String[] values, String group):表示⼀个可以被url激活的扩展点
实例,后⽂详细解释
其中,什么是⾃适应扩展点实例?它其实就是当前这个接⼝的⼀个代理对象。

1 ExtensionLoader<Protocol> extensionLoader = ExtensionLoader.getExt
ensionLoader(Protocol.class);
2 Protocol protocol = extensionLoader.getExtension("dubbo");


当我们调⽤上述代码,我们会将得到⼀个DubboProtocol的实例对象,但在getExtension()⽅法中,
Dubbo会对DubboProtocol对象进⾏依赖注⼊(也就是⾃动给属性赋值,属性的类型为⼀个接⼝,记为A
接⼝),这个时候,对于Dubbo来说它并不知道该给这个属性赋什么值,换句话说,Dubbo并不知道在进
⾏依赖注⼊时该找⼀个什么的的扩展点对象给这个属性,这时就会预先赋值⼀个A接⼝的⾃适应扩展点实
例,也就是A接⼝的⼀个代理对象。
后续,在A接⼝的代理对象被真正⽤到时,才会结合URL信息找到真正的A接⼝对应的扩展点实例进⾏调
⽤。

 


 

 
------分隔线----------------------------

锋哥公众号


锋哥微信


关注公众号
【Java资料站】
回复 666
获取 
66套java
从菜鸡到大神
项目实战课程

锋哥推荐