我是靠谱客的博主 粗心指甲油,最近开发中收集的这篇文章主要介绍SPI机制的一次具体使用,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

对spi机制的使用在一次对schemacrawler(一个数据库元数据爬虫框架)的使用中提升了很多。
基础了解:http://blog.csdn.net/qq_33793432/article/details/73112302

具体的使用:
我使用spi机制来调用不同数据库实现的分页方法。通过一个数据库类型来查找对应的实现类。

  1. 对外的接口或抽象类A
    你可以在A中定义实现的大体框架。
    这里写图片描述
    可以看到这个对外的抽象类接口中要求实现类必须提供的东西,其中对我最主要的还是那个接口IProduceSql , 它定义了产生sql语句的方法,要求实现类必须实现。

  2. 扫描实现类
    在自己的程序中还要对所有的实现类进行扫描注册
    这里写图片描述
    还是通过使用ServiceLoader 来扫描实现类。这里我使用一个集合装入我所有的实现。
    我的使用场景是,所有的实现类都提供了一个类型格式,我把类型格式为key,对应的实现类为value放入一个map中。
    在具体的使用时,根据url格式的不同就可以调用不同的实现类。

  3. 如何利用spi机制实现暴露的接口或抽象类
    举例我的mysql实现,这是另外一个项目:
    这里写图片描述
    我继承了对外的抽象类,提供了主要的MysqlProduceSqlImpl实现类。

    那么如何让它知道我实现了呢。
    这里写图片描述

    在根目录下新建 META-INF/services目录
    新建对外暴露的类A全路径在里面写入自己实现类的全路径

在主程序中引用这个mysql子项目。ServiceLoader就可以扫描到。

最后

以上就是粗心指甲油为你收集整理的SPI机制的一次具体使用的全部内容,希望文章能够帮你解决SPI机制的一次具体使用所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(39)

评论列表共有 0 条评论

立即
投稿
返回
顶部