让你彻底明白Java SPI与SpringBoot自动配置,内附实例代码演示
一、Java SPI的概念和术语
SPI:全称是Service Provider Interface:是一种基于ClassLoader来发现并加载服务的机制
SPI由三个组件构成:Service、Service Provider、ServiceLoader
- Service:是一个公开的接口或抽象类,定义了一个抽象的功能模块
- Service Provider:是Service的实现类
- ServiceLoader:是SPI机制中的核心组件,负责在运行时发现并加载Service Provider
二、Java SPI的运行流程
三、Java SPI在JDBC中的应用
- 在Java SPI出现之前,我们是这样来使用JDBC的
- JDBC要求Driver实现类在类加载的时候,能将自身的实例对象自动注册到DriverManager中,从而加载数据库驱动。
- Java SPI逐渐融入JDBC
四、Java SPI的三大规范要素
- 规范的配置文件
在JDBC中的对应实现
- Service Provider类必须具备无参的默认构造方法
在JDBC中的对应实现
- 保证能加载到配置文件和Service Provider类
在JDBC中的对应实现
总结:上述除了导包需要自己动手以外,其他的手续都是导包之后,Java SPI自动完成的
五、从0开始,手撸一个SPI的应用实例