@SpringBootApplication
开启组件扫描和自动配置
1.@SpringBootConfiguration
和 @Configuration 有相同的作用,配备了该注解的类可以以 Java Config 的方式完成一些配置
2.@ComponentScan
自动扫描,默认扫描被注解类所在的包, SpringBoot 项目一般会将入口类放在顶层目录,这样默认就会扫描整个项目
3.@EnableAutoConfiguration
-@AutoConfigurationPackage
-@Import AutoConfigurationPackages.Registrar
注册 BasePackages
-@Import AutoConfigurationImportSelector
注册所有支持 EnableAutoConfiguration 的组件
查找 classpath 上所有 jar 包中的 META-INF\spring.factories,
找出其中 key 为 EnableAutoConfiguration 的属性定义的工厂类名称
SpringApplication.run
1.创建 SpringApplication
创建 ApplicationContextInitializer
配置文件 classPath:META-INF/spring.factories
创建 ApplicationListener
配置文件 classPath:META-INF/spring.factories
设置启动类
推断容器类型 Standard/Web
2.run()
创建 Spring 上下文,调用 spring 容器的核心方法 Ab