Dubbo SPI 是怎么加载实现的?
查看完整题解
参考回答
直接回答
Dubbo 用 @SPI 声明扩展点。扩展配置把短名称映射到实现类,ExtensionLoader 能按名字找到对应类,在需要时创建并缓存实例。
讲清原理
应用可在 META-INF/dubbo/ 下提供以接口全限定名命名的扩展配置。框架还支持通过 @Adaptive 按调用参数选择实现,通过 @Activate 在满足条件时加入某条链。
例子与易错点
自定义负载均衡策略注册名为 tenant-aware,引用选择该名称后才会走这个实现。写错配置文件名或策略名,框架无法找到预期实现。
延伸阅读 Dubbo 在哪些地方用了 SPI? · Dubbo SPI 与 Java ServiceLoader 有什么区别? · 扩展 Dubbo 的行为要改框架源码吗?
这道题,你掌握得怎么样?
掌握程度由你主动标记,阅读和收藏不会自动改变状态。