java spring面试题及答案,spring java面试题
墨初 知识笔记 57阅读
现在有了ServiceLoad类,就可以调用它的Load方法,然后就可以自动加载这个接口下面的实现类了,所以现在数据库厂商可以直接注册这个实现类了。指定的步骤是写一个文件。既然数据库厂商相当于什么都做好了,我们就不需要在这里完成注册驱动的步骤了。这一步可以省略。这是JDBC4.0以后支持的关键service loader . load(driver . class);ServiceLoaderConnection s service loader . load(connection . class);然后在数据库服务器厂商端的项目resouces目录下写一个名为java.sql.Driver的文件,然后在里面写驱动实现类的完整类名。
p>......
另外还有日志框架也是利用SPI机制
四、 例子我们现在需要使用一个内容搜索接口搜索的实现可能是基于文件系统的搜索也可能是基于数据库的搜索。

public interface Search { public List<String> searchDoc(String keyword); }
文件搜索实现
public class FileSearch implements Search{ Override public List<String> searchDoc(String keyword) { System.out.println(文件搜索 keyword); return null; }}
数据库搜索实现
public class DatabaseSearch implements Search{ Override public List<String> searchDoc(String keyword) { System.out.println(数据搜索 keyword); return null; }}
resources 接下来可以在resources下新建META-INF/services/目录然后新建接口全限定名的文件com.cainiao.ys.spi.learn.Search
里面加上我们需要用到的实现类
com.cainiao.ys.spi.learn.FileSearch
测试方法
public class TestCase { public static void main(String[] args) { ServiceLoader<Search> s ServiceLoader.load(Search.class); Iterator<Search> iterator s.iterator(); while (iterator.hasNext()) { Search search iterator.next(); search.searchDoc(hello world); } }}
标签: