@SpringBootApplication注解是@SpringBootConfiguration, @EnableAutoConfiguration, @ComponentScan这三个注解的组合; 其中@EnableAutoConfiguration表示开启自动配置
@EnableAutoConfiguration代码:
@AutoConfigurationPackage
// 可以看到注入了该bean
@Import(AutoConfigurationImportSelector.class)
public @interface EnableAutoConfiguration {
//...
}
总结:
- SpringBoot先加载所有的自动配置类 xxxxxAutoConfiguration
- 每个自动配置类按照条件进行生效,一般还会有xxxProperties类和配置文件中的配置相绑定
- 生效的配置类就会给容器中装配很多bean了