Spring Boot 自动配置(Auto-configuration)的核心原理是基于 @EnableAutoConfiguration 注解和 SpringFactoriesLoader 机制 。它会扫描类路径(Classpath)下的 META-INF/spring.factories 或 META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports 文件,结合 条件注解 (如 @ConditionalOnClass、@ConditionalOnMissingBean)智能推断依赖,从而自动配置并注册相应的 Bean 到 IOC 容器中。 核心原理详解
-
启动入口:
@SpringBootApplication- 这是一个复合注解,核心在于其中的
@EnableAutoConfiguration。
- 这是一个复合注解,核心在于其中的
-
核心注解:
@EnableAutoConfiguration- 该注解通过
@Import(AutoConfigurationImportSelector.class)导入自动配置选择器。
- 该注解通过
-
自动配置加载:
AutoConfigurationImportSelector- 它会利用
SpringFactoriesLoader读取所有 Starter 类路径下META-INF/spring.factories或.imports文件中定义的自动配置类(AutoConfiguration)。
- 它会利用
-
智能筛选:条件注解 (
@Conditional)-
自动配置类并非全部生效。Spring Boot 会根据
@Conditional系列注解进行筛选,例如:-
@ConditionalOnClass:Classpath 下存在指定类时才生效。 -
@ConditionalOnMissingBean:容器中不存在该 Bean 时才生效(实现用户配置优先)。 -
@ConditionalOnProperty:配置文件中存在指定属性时才生效。
-
-
工作流程总结
-
加载候选者 :启动时扫描所有 Jar 包的
META-INF/spring.factories。 -
过滤生效配置:结合条件注解,判断环境是否满足生效条件。
-
实例化 Bean:将生效的自动配置类中的 Bean 注册到 Spring IOC 容器。 这种机制允许开发者只需依赖 Starter,无需复杂的 XML 或 Java 配置即可快速启动功能。