dubbo SPI 是怎么实现的?
Dubbo SPI 的目的是为了得到一个指定实现类的对象
Dubbo 并未使用 Java SPI ,而是重新设计了一套增强版的 SPI 。 Dubbo SPI 的相关逻辑封装在了 ExtensionLoader 类中,通过 ExtensionLoader ,我们可以加载指定的实现类。Dubbo SPI 所需要的配置文件在 META-INF/dubbo 路径下。
示例
现在 dubbo 路径下,配置内容如下:
optimusPrime = org.apache.spi.OptimusPrime
bumblebee = org.apache.spi.Bumblebee
通过键值对的方式进行配置,配置完成之后会按照需要加载指定的实现类,另外,在测试 Dubbo SPI 时,需要在 Robot 接口上标注 @SPI 注解。
public class DubboSPITest {
@Test
public void sayHello() throws Exception {
ExtensionLoader<Robot> extensionLoader =
ExtensionLoader.getExtensionLoader(Robot.class);
Robot optimusPrime = extensionLoader.getExtension("optimusPrime");
optimusPrime.sayHe