一、Dubbo实现SPI之 JDK介绍
1、Dubbo实现SPI之 JDK介绍
Dubbo SPI的思想 --->!大家是否熟悉spi(service providerinterface)机制,即我们定义了服务接口标准,让厂商去实现(如果不了解spi的请谷歌百度下),
jdk通过ServiceLoader类实现spi机制的服务查找功能。
我们来看下jdk是如何实现: JDK实现SPI服务查找: ServiceLoader。
package com.test;
public interface SPI {
String sayHello();
}
ServiceLoader会遍历所有jar查找META-INF/services/com.test.SPI文件
然后是各个厂商去提供实现
package com.test.testA;
public class SPITestA implements SPI {
public String syaHello() {
return “hello---->testA”;
}
}
在testA厂商提供的jar包中的META-INF/services/com.test.SPI文件内容为:
com.test.testA.SPITestA #厂商A的spi实现全路径类名
其他厂商类似。
jdk ServiceLoader.load(Spi.class)读取testA、等提供jar包中的文件,ServiceLoader实现了Iterable接口可通过while for循环语句遍历出所有实现。
一个接口多种实现,就如策略模式一样提供了策略的实现,