一、介绍
1 说明
Java中使用SPI功能,需要先提供标准服务接口,然后再提供相关接口实现和调用者。这样就可以通 过SPI机制中约定好的信息进行查询相应的接口实现。
2 约定
1、当服务提供者提供了接口的一种具体实现后,在META-INF/services目录下创建一个以“接口全 限定名”为命名的文件,内容为实现类的全限定名;
2、接口实现类所在的jar包放在主程序的classpath中;
3、主程序通过java.util.ServiceLoader动态装载实现模块,它通过扫描META-INF/services目录下 的配置文件找到实现类的全限定名,把类加载到JVM;
4、SPI的实现类必须携带一个无参构造方法;
二、demo
1 建接口module 写接口类

2 module 实现类
<dependencies><dependency><groupId>com.flame</groupId><artifactId>java_spi_demo_api</artifactId><version>1.0-SNAPSHOT</version></dependency></dependencies>
3 SPI 配置文件

4 测试module
<dependencies><dependency><groupId>com.flame</groupId><artifactId>java_spi_demo_api</artifactId><version>1.0-SNAPSHOT</version></dependency><dependency><groupId>com.flame</groupId><artifactId>java_spi_demo_impl</artifactId><version>1.0-SNAPSHOT</version></dependency></dependencies>


