Dubbo 的 SPI 机制?
Dubbo 面试题发布于
一、SPI 定义
Service Provider Interface,服务提供接口。Java 有自带 SPI,Dubbo 对其增强。
二、Dubbo SPI 优势
- 按需加载,不一次性加载所有实现。
- 支持自适应扩展(@Adaptive),运行时动态选择实现。
- 支持自动包装(Wrapper),AOP 能力。
- 支持依赖注入。
三、使用
- 接口加 @SPI 注解。
- META-INF/dubbo/ 下配置文件:key=实现类全限定名。
- ExtensionLoader.getExtensionLoader(接口.class).getExtension("key")。
四、@Adaptive
动态生成代理类,根据 URL 参数选择具体实现,避免硬编码。Dubbo 的 Protocol、LoadBalance 等都用自适应扩展。
五、应用
Dubbo 的协议、负载均衡、序列化、注册中心等全部通过 SPI 实现,可灵活扩展。