===== 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}}