===== spi全称 =====
SPI的全名为Service Provider Interface
===== spi原理简单介绍 =====
* 编程时面向接口
* 通过配置文件,配置哪些实现类,实现了该接口。配置文件目录 META-INF/services/
* 由ServerLoader类从配置文件加载实现类
不就是spring吗?
===== 例子 =====
接口定义
public interface Search {
void search(String keyword);
}
实现类1
public class FileSearch implements Search {
public void search(String keyword) {
System.out.println("file: " + keyword);
}
}
实现类2
public class DatabaseSearch implements Search {
public void search(String keyword) {
System.out.println("database: " + keyword);
}
}
主函数
public static void main(String[] args) {
ServiceLoader s = ServiceLoader.load(Search.class);
Iterator searchs = s.iterator();
if (searchs.hasNext()) {
Search curSearch = searchs.next();
curSearch.search("test");
}else{
System.out.println("end");
}
}
配置文件(文件名:接口名称,内容:实现类名称)
{{:pasted:20171203-121942.png}}{{:pasted:20171203-122006.png}}