SPI(Service Provider Interface)是JDK自带的一种服务发现机制,类似于Spring的IOC思想,例如Mysql Driver等都使用了JDK的SPI。
SPI设计目标:
1、面向接口编程,各模块间不耦合具体实现;
2、各接口实现间实现可插拔机制,不需要修改具体代码;
3、需要服务发现机制;
SPI的约定:
1、当一个provider有多种实现时,一般在jar包的META-INF/services/目录下创建该接口的同名文件;
2、文件内容为该接口具体实现的名称,名称为全限定包名;
3、当需要加载接口实现时jdk可以通过该文件找到对应的实现;