SpringBoot的核心注解@SpringBootApplication由三个注解组成
1. @SpringBootConfiguration
@SpringBootConfiguration
点进去就是一个@Configuration
注解,指定启动类为一个组件
2. @EnableAutoConfiguration
@EnableAutoConfiguration
是由@AutoConfigurationPackage
和 @Import(AutoConfigurationImportSelector.class)
组成
@AutoConfigurationPackage
实际上是@Import(AutoConfigurationPackages.Registrar.class)
在Registrar
中,有两个方法
registerBeanDefinitions()
方法的参数AnnotationMetadata metadata
,用来获取注解的元信息,比如注解标注在哪等,方法内部的register()
方法通过注解元信息获取注解所标注的类的包路径放到数组中,并将数组中每个路径下的所有组件批量注册到IOC容器中(其实就是主启动类所在的包路径)
@Import(AutoConfigurationImportSelector.class)
通过getAutoConfigurationEntry()
方法给容器中导入组件