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