欢迎来到飞鸟慕鱼博客,开始您的技术之旅!
当前位置: 首页知识笔记正文

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);        }    }}

标签:
声明:无特别说明,转载请标明本文来源!