总结: (有错的话,希望大佬指出)
*java SPI:jdk提供的,并不会装载到ioc容器中(我们用于装载系统配置)
*@EnableAutoConfiguration自动配置:spring提供的,装载到IOC容器中
*都是类加载的方式
java SPI
- 1. 概念和术语
- 2. Demo --JDBC
- 3. JavaSPI 三大规范和要素
- 4. demo
- 5. JavaSPI与Spring boot自动配置
- 6. 总结Spring Boot自动配置的核心流程
1. 概念和术语
Service:是一个公开的接口或者抽象类,定义了一个抽象的功能模块。
Service Provider:Service接口的一个实现类。
ServiceLoader:SPI机制中的核心组件,负责在运行时发现并加载Service Provider。
1、概念:
SPI(Service Provider Interface)服务提供接口,简单来说就是用来解耦,实现插件的自由插拔,加载classpath下所有META-INF/services/目录下的对应给定接口包路径的文件,
然后通过反射实例化配置的所有实现类,以此将接口定义和逻辑实现分离)这里面涉及到了各种配置注解。
2:机制
当服务的提供者,提供了服务接口的一种实现之后,在jar包的META-INF/services/目录里同时创建一个以服务接口命名的文件。该文件里就是实现该服务接口的具体实现类。而当外部程序装配这个模块的时候,就能通过该jar包META-INF/services/里的配置文件找到具体的实现类名,并装载实例化,完成模块的注入。通过这个约定,就不需要把服务放在代码中了,通过模块被装配的时候就可以发现服务类了
1.1 运行流程
2. Demo --JDBC
2.1 JDBC是什么
首先,JDBC即使用java语言来访问数据库的一套API,每个数据库厂商都提供了各自的JDBC实现。