简介
java SPI 需要遵循的约定如下:
- 当服务者提供某个接口的实现后,在jar包中的
META-INF/ervices
目录下创建一个以接口全限定
为命名的文件。内容为实现类的全限定名 - 接口实现类所在的jar包放在主程序的classpath中
- java.util.ServiceLoder动态装载实现模块,它通过扫描META-INF/services目录下的配置文件找到实现类的全限定名,把类加载到JVM
实现
定义接口
import java.util.List;
public interface Search {
List<String> searchDoc(String keyword);
}
接口的某个实现类
import java.util.List;
public class FileSearch implements Search{
@Override
public List<String> searchDoc(String keyword) {
System.out.println("文件搜索 "+keyword);
return null;
}
}
某个实现类生效
在resources
下新建META-INF/services/
目录。新建一个文件名为接口全类名 com.dankun.ldemo.spi.Search
内容是具体的实现类的全限定名称com.dankun.ldemo.spi.FileSearch
refer
https://zhuanlan.zhihu.com/p/28909673
https://developer.aliyun.com/article/640161
网友评论