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;

扫描二维码关注公众号,回复: 238671 查看本文章

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循环语句遍历出所有实现。

一个接口多种实现,就如策略模式一样提供了策略的实现,

猜你喜欢

转载自kuanghe.iteye.com/blog/2388275