1、定义
SPI(Service Provider Interface),即服务提供者接口,是JDK内置的一种动态服务提供发现机制。
SPI可以实现在不修改原来jar包的情况下,新增一种API的实现。
在接口依赖关系中,实现方实现SPI接口,调用方依赖SPI接口。SPI是由调用方定义的,这是它和API最大的不同。
2、SPI实现
当服务的提供者,提供了接口的一种具体实现后,在jar包的META-INF/services/目录中创建一个以“接口全限定名”为命名的文件,内容为实现类的全限定名。
SPI所在的jar放在主程序的classpath中。
外部程序通过java.util.ServiceLoader动态装载实现模块,它通过扫描META-INF/services目录下的配置文件找到实现类的全限定名,把类加载到jvm。
3、示例
TODO