SpringBoot 的自动配置基于“约定大于配置”的思想,通过多个关键机制实现。启动时,SpringBoot 会扫描 `classpath` 下的 `META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports` 文件,加载其中的自动配置类。这些类通过条件注解(如 `@ConditionalOnClass`、`@ConditionalOnMissingBean`)确保仅在满足特定条件下生效。例如,引入 `spring-boot-starter-data-redis` 时,自动配置会检测到 `LettuceConnectionFactory` 类,并在未创建 `RedisTemplate` 时自动配置连接池和模板对象。自动配置类通常存在于 `spring.factories` 或 `AutoConfiguration.imports` 中,条件装配避免冲突,配置优先级可通过 `@AutoConfigureAfter` 控制。`@EnableAutoConfiguration` 注解是触发整个自动配置链路的开关,许多第三方库(如 Nacos、MyBatis-Plus)也遵循这一模式,简化了初始化配置。
底层剖析
15
cenyuio