SPI:全称是Service Provider Interface 服务提供接口
它是一种从java6开始引入的,是一种基于ClassLoader来发现并加载服务的机制
一个标准的SPI,由3个组件构成,分别是:
1、 Service 是一个公开的接口或抽象类,定义了一个抽象的功能模块
2、Service Provider 是Service 接口的一个实现类
3、ServiceLoader 是SPI机制中的核心组件,负责运行时发现并加载Service Provider
10分钟让你彻底明白Java SPI,附实例代码演示#安员外很有码_哔哩哔哩_bilibili
01、它的作用是什么?解决了什么样的问题?在这里说一句其实每一个技术都是这样
02、如果实现一个SPI应用,需要怎么做
03、背后的设计思想是什么?我们得到什么启示
Java SPI在JDBC的应用
jdbc,全称是java DataBase Connectivtry
JDBC就是使用java语言来访问数据库的一套API
每个数据库厂商会提供各自的JDBC实现
Java SPI的三大要素
1、文件路径:必须在JAR包中META-INF/services目录下
2、文件名称:Service接口全限定名
3、文件内容:Service实现类的全限定名。如果有多个实现类,那么每一个类在文件中单独占据一行。
作用:提供了一种组件发现和注册的方式,可以实现各种插件,或者灵活替换框架所使用的组件
优点:基于面向接口编程,优雅的实现模块之间的解耦
设计思想:面向接口+配置文件+反射技术
应用场景:JDBC、SLF4J、SERVLET容器初始化
SpringBoot自动配置和Java SPI机制有异曲同工之妙