概述
Spring Boot中的SPI机制
- 什么是SPI
- 案例
什么是SPI
SPI ,全称为 Service Provider Interface,是一种服务发现机制。它通过在ClassPath路径下的META-INF/services文件夹查找文件,自动加载文件里所定义的类。这一机制为很多框架扩展提供了可能,比如在Dubbo、JDBC中都使用到了SPI机制。
如在连接数据库时,Java只提供jdbc接口的一些规范,而具体的连接细节则是由各大数据库厂商自己制定完成。
案例
在项目A中我们定义一个接口
/**
* SPI 定义的公共接口
*/
public interface DataBase {
void openConnection();
}
然后将项目A发布到我们的本地Maven仓库中
然后创建项目B,引入我们项目A的依赖坐标,然后创建接口的实现
/**
* SPI:Mysql的实现类
*/
public class MysqlDataBase implements DataBase {
@Override
public void openConnection() {
System.out.println("mysql connection....");
}
}
接着我们在项目B中的resources中创建META-INF/services目录
然后在目录中创建一个文件,名称必须是项目A接口的全类路径名称。然后在文件中写上接口的实现类的全类路径名称(这里会有代码提示)
将项目B用同样的方法发布到我们的本地Maven仓库。
最后在项目C中测试一下,代码如下
public class TestSPI {
public static void main(String[] args) {
ServiceLoader<DataBase> load = ServiceLoader.load(DataBase.class);
Iterator<DataBase> iterator = load.iterator();
while(iterator.hasNext()){
DataBase next = iterator.next();
next.openConnection();
}
}
}
查看控制台打印信息如下,测试成功
mysql connection…
最后
以上就是柔弱冰淇淋为你收集整理的Spring Boot中的SPI机制什么是SPI案例的全部内容,希望文章能够帮你解决Spring Boot中的SPI机制什么是SPI案例所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复