@SpringBootApplication
是一个复合注解
@SpringBootConfiguration底层是一个@Configuration注解,表示当前引导类也是一个配置类
@ComponentScan,表示Spring会自动扫描引导类所在的包及子包下能够识别的组件
@EnableAutoConfiguration:核心的自动装配注解,底层是一个@Import注解,会导入一个AutoConfigurationImportSelector这个配置类,会自动执行 selectImports方法,最终会去调用SpringFactoriesLoader.loadFactoryNames方法,去扫描 META-INF/spring.factories 文件中名称为EnableAutoConfiguation对应的字符串列表,还有会扫描 META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports 文件中所有信息,加载进内存封装成一个数组,最后会根据各种条件【起步依赖、@Conditional相关注解】进行过滤,找到匹配条件的全类名,并封装成字符串数组到内存中。在调用run方法时,通过反射创建对象并交给Spring容器管理