SPI 全称Service Provider Interface
协议约定:扩展点必须放在resources/META-INF/services目录下
创建一个maven工程,定义一个接口,实现由第三方提供
public interface ITest
{
String getName();
}
创建另一个maven工程依赖前一个工程
创建接口实现
public class MyTestName implements ITest
{
public String getName()
{
return "MyTestName";
}
}
在resources/META-INF/services目录下创建一个接口的全路径命名的文件 com.mytest.ITest在里面写实现类的扩展com.mytest.name.MyTestName
创建一个测试类。使用ServicefLoader加载对应的扩展点,
public class SpiMain {
public static void main(String args[])
{
ServiceLoader<ITest> serviceLoader=ServiceLoader.load(ITest.class);
serviceLoader.forEach(test->System.out.println(test.getName()))
}
}