Springboot 自动配置原理
Springboot 的自动配置原理核心在于其自动配置类以及条件注解等机制共同协作来实现的。
首先,Springboot 在启动时会去扫描项目的依赖以及自身的类路径,查找带有特定标识的自动配置类。这些自动配置类一般位于 “spring-boot-autoconfigure” 模块中,它们的命名大多遵循 “XXXAutoConfiguration” 这样的规范。比如,当项目中引入了 Spring Data JPA 的依赖,就会有对应的 JpaAutoConfiguration 类被找到。
每个自动配置类都会使用条件注解(如 @ConditionalOnClass、@ConditionalOnMissingBean 等)来判断当前环境是否满足配置生效的条件。以 @ConditionalOnClass 为例,如果项目中存在某个特定的类(比如在配置数据库相关自动配置时,判断是否存在数据库驱动类),那么这个与数据库相关的自动配置类才有可能生效。@ConditionalOnMissingBean 则是当容器中不存在某个特定的 Bean 时,自动配置类中相应的 Bean 定义才会被创建并注入到容器中。
接着,在自动配置类里面,会通过常规的 Spring 配置方式,比如使用 @Bean 注解来定义各种组件 Bean,配置