需要在class路径下新建services文件夹,然后新建文件,文件名是接口名,里面放入实现
image.png
接口
public interface IShout {
void shout();
}
实现
public class Cat implements IShout {
@Override
public void shout() {
System.out.println("miao miao");
}
}
测试
@Test
public void test1() {
ServiceLoader<IShout> shouts = ServiceLoader.load(IShout.class);
for (IShout s : shouts) {
s.shout();
}
}
比如在DriverManager里就使用到了spi
image.png