springboot-004-主程序类
@SpringBootApplication
点进这个注解看
进去第一个注解@SpringBootConfiguration看,上面有Configuration注解
@Configuration 这是Spring的配置类注解, 说明这个类一个配置类,里面都是配置文件
进第二个注解@EnableAutoConfiguration, 顾名思义,这是允许自动配置生效的注解, 接下来进去看它。
@EnableAutoConfiguration
进去后也有两个注解:第一个AutoConfigurationPackage,进去看
里面有这个注解,@Import({Registrar.class}) @Import是spring的底层注解,作用是给Spring导入一个Registrar组件
进去看Registrar,
将主配置类所在的包以及以下的包里的所有组件,扫描到Spring容器中。
第二个@Import({AutoConfigurationImportSelector.class})
进AutoConfigurationImportSelector里看,
这个configurations数组是我们需要导入的组件。看看configurations有什么,
实际上是将所有需要导入的组件以类全名的方式返回,这些组件会导入到容器中
能看到是从META-INF/spring.factories里获取EnableAutoConfiguration指定的值,将这些值作为自动配置类导入到容器中,自动配置类就生效,帮我们完成自动配置工作:
看看spring.factories里有什么,有非常多的自动配置类 XXXAutoCOnfiguration(这里就不进去看了), @Import({AutoConfigurationImportSelector.class})就是给容器中导入这个场景需要的所有组件并且配置好
注意spring-boot-autoconfigure.jar包。这里面有所有自动配置的组件