dubbo的SPI应用与原理
dubbo SPI(Service Provider Interface) 本质是 将接口实现类的全限定名配置在文件中,并由服务加载器读取配置文件,加载实现类 。这样可以在运行时,动态为接口替换实现类。 在Java中SPI是被用来设计给服务提供商做插件使用的。基于策略模式 来实现动态加载的机制 。我们在程序只定义一个接口,具体的实现交个不同的服务提供者;在程序启动的时候,读取配置文件,由配置确定要调用哪一个实现; 通过 SPI 机制为我们的程序提供拓展功能,在dubbo中,基于 SPI,我们可以很容易的对 Dubbo 进行拓展。例如dubbo当中的protocol,LoadBalance等都是通过SPI机制扩展。 想要学习 Dubbo 的源码,SPI 机制务必弄懂。接下来,我们了解下JAVA SPI与dubbo SPI的用法,再分析DUBBO SPI的源码,本文的dubbo源码是基于2.7.5版本。 JAVA 原生SPI 示例 先简单介绍JAVA SPI的应用。首先,我们定义一个Car接口 public interface Car { String getBrand () ; } 定义该接口的两个实现类。 public class BM implements Car { public String getBrand () { System.out.println( "BM car"