Skip to content
极高进阶

一句话答案

@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。核心口诀:"约定大于配置"。