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就可以扫描到。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值