@SpringBootApplication包括三个注解:
- @SpringBootConfiguration
- @ComponentScan
- @EnableAutoConfiguration
这里最主要的就是@EnableAutoConfiguration :
-
当使用@EnableAutoConfiguration注解激活自动装配时,实质对应着很多XXXAutoConfiguration类在执行装配工作。 这些XXXAutoConfiguration类是在spring-boot-autoconfigure jar中的META-INF/spring.factories文件中配置好的。 @EnableAutoConfiguration通过SpringFactoriesLoader机制创建XXXAutoConfiguration这些bean。
-
XXXAutoConfiguration的bean会依次执行并判断是否需要创建对应的bean注入到Spring容器中。 在每个XXXAutoConfiguration类中,都会利用多种类型的条件注解@ConditionOnXXX对当前的应用环境做判断,如应用程序是否为Web应用、classpath路径上是否包含对应的类、Spring容器中是否已经包含了对应类型的bean。如果判断条件都成立,XXXAutoConfiguration就会认为需要向Spring容器中注入这个bean,否则就忽略。