源码学习-Dubbo SPI 源码分析
背景
今天我们来聊一聊Dubbo 的 SPI
Java 的 SPI 见 https://mikeygithub.github.io/2021/07/21/yuque/coahg1/
简介
SPI : Service Porvider Interface 服务提供接口。使我们的应用程序具有可扩展的服务(微内核架构)、使用者能够添加服务提供者,而无需修改原始应用程序即可实现其适配,像JDBC、一些框架都有用到。
源码
Dubbo 的 SPI 核心加载类是 **ExtensionLoader **类
1 |
|
1. 获取拓展
1.1 获取拓展
首先我们可以从DubboProtocol类开始看起,其获取dubbo协议就是通过spi进行加载,如下图,在获取拓展之前要优先获取它的加载器
从上图我们可以看出,2.7后的版本有较大的变化,3.0版本新增了ScopeModel模型范围来区分拓展的作用域
- FRAMEWORK: 扩展实例在框架内使用,与所有应用程序和模块共享。
- APPLICATION: 扩展实例在一个应用程序中使用,与应用程序的所有模块共享,不同的应用程序会创建不同的扩展实例。