我是靠谱客的博主 柔弱冰淇淋,最近开发中收集的这篇文章主要介绍Spring Boot中的SPI机制什么是SPI案例,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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案例所遇到的程序开发问题。

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

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

评论列表共有 0 条评论

立即
投稿
返回
顶部