外观
一句话答案
@EnableAutoConfiguration 通过 spring.factories 加载配置类,@Conditional 条件过滤,实现约定大于配置。
核心要点
流程: @SpringBootApplication → @EnableAutoConfiguration → AutoConfigurationImportSelector → 读取 META-INF/spring.factories → @Conditional 条件过滤 → 注册符合条件的 Bean
自定义Starter: 写 AutoConfiguration 类 + spring.factories 注册
追问与易错
追问方向:
- @Conditional 有哪些常用派生注解?(@ConditionalOnClass/OnBean/OnProperty/OnMissingBean)
- 怎么自定义一个 Starter?(autoconfigure 模块 + starter 模块 + spring.factories)
- 自动配置的顺序能控制吗?(@AutoConfigureOrder / @AutoConfigureBefore/After)
易错点:
- ❌ "自动配置就是全部加载"——@Conditional 会过滤大部分配置类
- ❌ "spring.factories 只能放一个配置类"——可以逗号分隔放多个
💡 记忆锚点
自动配置 = 智能管家:@EnableAutoConfiguration让管家去spring.factories翻配置菜单,@Conditional条件过滤(家里有微波炉才买微波炉食品),最终只加载你需要的Bean。核心口诀:"约定大于配置"。