主类的核心注解
@SpringBootApplication
实质为三个注解:
@SpringBootConfiguration<br /> @EnableAutoConfiguration<br /> @ComponentScan

@SpringBootConfiguration

实质为@Configuration,指主类为一个配置类

@ComponentScan

注解扫描,默认是扫描当前类下的package

@EnableAutoConfiguration

实质为两个注解
@AutoConfigurationPackage<br /> @Import({AutoConfigurationImportSelector.class})

@AutoConfigurationPackage

等同于@Import(AutoConfigurationPackages.Registrar.class),将Registrar注册为Bean
image.png
主类的所在包及其子包里边的组件扫描到Spring容器中。

@Import({AutoConfigurationImportSelector.class})

内部实际上就去加载META-INF/spring.factories文件的信息,然后筛选出以EnableAutoConfiguration为key的数据,加载到IOC容器中,实现自动配置功能!
每一个配置类里的又通过条件加载ConditionalOnBean等等注解,决定是否注册Bean