跳至主要内容

博文

目前显示的是 五月, 2019的博文

Spring Boot 2 启动流程解析

Spring Boot 2 启动流程解析 本文基于Spring Boot 2.1.4.RELEASE版本,希望通过"自顶向下"的方法来理解Spring Boot的启动流程。先从整体上了解流程走向,再查看对应源码。 启动类 Spring Boot的启动类通常如下: @SpringBootApplication public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } } 首先看一下 @SpringBootApplication 注解,这个注解由3个注解组成 @SpringBootApplication=@EnableAutoConfiguration+@ComponentScan+@Configuration 注意: @SpringBootApplication实际上注册的是@SpringBootConfiguration,但@SpringBootConfiguration里面包含了@Configuration。 各个注解作用如下: @EnableAutoConfiguration 开启自动配置 @ComponentScan SpringBean扫描 @Configuration 开启配置类 然后再看一下 SpringApplication 类,这个类主要通过如下步骤启动应用: 根据应用的classpath创建对应的ApplicationContext(独立应用、WEB应用或REACTIVE应用) 注册CommandLinePropertySource,把命令行参数转换为Spring Properties 刷新ApplicationContext,加载所有的单例SpringBean 调用实现了CommandLineRunner的SpringBean中的run方法 下面从源码上分别来看下这些步骤,这些步骤主要在 SpringApplication 类中的run方法中( public ConfigurableApplicationContext run(String... args)