-
springboot启动类中内容
@SpringBootApplication public class Application { public static void main(String[] args) throws Exception { SpringApplication.run(Application.class, args); } }- @SpringBootApplication相当于 @SpringBootConfiguration + @ComponentScan + @EnableAutoConfiguration ,因此我们直接拆开来分析。
- @SpringBootConfiguration 通过与 @Bean 结合完成Bean的 JavaConfig 配置;
- @ComponentScan 通过范围扫描的方式,扫描特定注解注释的类,将其注册到Spring容器;
- @EnableAutoConfiguration 通过 spring.factories 的配置,并结合 @Condition 条件,完成bean的注册;
- 除了上面的三个注解,还可以使用@import注解将bean注册到Spring容器
- @import 通过导入的方式,将指定的class注册解析到Spring容器;
- @SpringBootApplication相当于 @SpringBootConfiguration + @ComponentScan + @EnableAutoConfiguration ,因此我们直接拆开来分析。
-
springboot的启动流程:
- SpringApplication的实例化
- 断应用类型是否是Web环境
- 设置初始化器(Initializer)
- 设置监听器(runListener)
- 获取SpringApplicationRunListeners
- 根据SpringApplicationRunListeners以及参数来准备环境ConfigurableEnvironment
- Banner打印器
- 创建ApplicationContext应用上下文
- ApplicationContext前置处理
- ApplicationContext刷新
- ApplicationContext后置处理
Springboot 启动原理详细解析
Springboot项目启动原理详细解析
SpringBoot中CommandLineRunner和ApplicationRunner接口解析和使用



