Dubbo 源码剖析与实战
何辉
平安壹钱包架构师
4711 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 33 讲
开篇词 (1讲)
Dubbo 源码剖析与实战
15
15
1.0x
00:00/00:00
登录|注册

17|Adaptive适配:Dubbo的Adaptive特殊在哪里?

你好,我是何辉。
有了上一讲“Compiler 编译”的基础,相信你在今天 Dubbo 源码第六篇 Adaptive 适配,会比较轻松。
其实 Adaptive 我们见过好几次了。还记得在“SPI 机制”中提到的 ExtensionLoader 类么,我们在认真研究 ExtensionLoader 源码时,发现这个类里有一个获取自适应扩展点的方法(getAdaptiveExtension)。
深入 Dubbo SPI 机制的底层原理时,在加载并解析 SPI 文件的逻辑中,你会看到有一段专门针对 Adaptive 注解进行处理的代码;在 Dubbo 内置的被 @SPI 注解标识的接口中,你同样会看到好多方法上都有一个 @Adaptive 注解。
这么多代码和功能都与 Adaptive 有关,难道有什么特殊含义么?Adaptive 究竟是用来干什么的呢?我们开始今天的学习。

自适应扩展点

照例还是从直接的方式——代码着手,我们就先从 ExtensionLoader 的 getAdaptiveExtension 方法开始吧。
不过,一开始就有点小障碍,从 ExtensionLoader 的使用方式上看,我们得找个接口传进去,但是这一时半会也不知道传什么接口才好啊。
别慌,回忆我们在“点点直连”学过一个小技巧,如果不知道源码的某个方法如何使用,最好的第一手资料就是源码,从源码中寻找别人使用这个方法的正确姿势。按照小技巧的思路,看下 getAdaptiveExtension 方法有多少个方法被调用。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

Dubbo中的Adaptive特性在SPI机制中具有重要性和灵活性。Adaptive不仅在ExtensionLoader类中提供了获取自适应扩展点的方法,还在SPI文件加载和解析逻辑中处理Adaptive注解。通过动态生成源代码和代理逻辑,Adaptive实现了动态适配,使得Dubbo能够根据不同条件选择合适的实现。文章深入分析了Dubbo中Adaptive的实现机制,揭示了其在SPI机制中的重要性和灵活性。Adaptive的特殊之处在于其不仅出现在SPI接口的方法上,还会出现在SPI接口的实现类上,因此自适应扩展点有两个来源,实现类和生成的代理类。当获取自适应扩展点时,若实现类上有@Adaptive注解,则优先使用这个实现类作为自适应扩展点。文章还提供了验证源码推测的Demo样例,通过验证方案一和验证方案二的实施结果,充分验证了探索源码的结论。最后,文章探讨了Adaptive适配的应用思想,指出Dubbo的这种思想很值得借鉴,但也提出了该机制可能存在的缺点。整体而言,本文通过深入分析Dubbo中Adaptive的实现机制,为读者深入理解Dubbo的SPI机制和灵活的扩展能力提供了重要参考。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《Dubbo 源码剖析与实战》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(3)

  • 最新
  • 精选
  • Ahaolin
    https://ahaolin-public-img.oss-cn-hangzhou.aliyuncs.com/img/202303030954605.png

    作者回复: 你好,Ahaolin:非常 nice,点赞~

    2023-03-03归属地:浙江
    1
  • Lum
    这里在生成代理类得时候会根据该注解判断是否有value值,如果没有就通过小写字母分开为点camelToSplitName,如果有就按照注解的value值进行赋值

    作者回复: 你好,Lum:没看懂,看了半天,没意会是哪个细小环节,尴尬啦~

    2023-03-02归属地:北京
  • Lum
    老师讲的真好,层层深入,对dubbo的spi有了更深的理解了,期待学完课把dubbo所有的流程串起来

    作者回复: 你好,Lum:你可以的,为你点赞,加油@_@

    2023-03-01归属地:北京
收起评论
显示
设置
留言
3
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部