Java中的SPI机制

SPI机制的主要作用是获取接口的所有实现类,可以快速扩展和替换

创建接口及实现类

创建接口:com.maxzhao.IPrint

1
2
3
public interface IPrint {
void print();
}

创建实现类:com.maxzhao.CatPrint

1
2
3
4
5
6
public interface CatPrint implements IPrint {
@Override
public void print(){
System.out.println("cat");
}
}

resources下创建文件:META-INF/services/com.maxzhao.IPrint,写入

1
com.maxzhao.CatPrint

加载接口的实现类

1
2
3
4
5
6
7
8
9
10
public class ServiceLoaderTest {
public void tests(){
ServiceLoader<IPrint> serviceLoader = ServiceLoader.load(IPrint.class, classLoader);
Iterator<IPrint> iterator = serviceLoader.iterator();
while (iterator.hasNext()) {
NodeServerPluginStart next = iterator.next();
assert "com.maxzhao.CatPrint".equals(next.getClass().getName())
}
}
}

本文地址: https://github.com/maxzhao-it/blog/post/804090fa/