SpringBootApplication启动之run()

474 阅读1分钟

1、SpringBoot入口方法:

public static void main(String[] args) {
    SpringApplication.run(UserManagementApplication.class, args).getEnvironment();
}

2、进入run()方法:

public static ConfigurableApplicationContext run(Class<?>[] primarySources, String[] args) {
   return new SpringApplication(primarySources).run(args);
}

这里做了2件事:

  1. 实例化SpringApplication()对象:从META-INF/spring.factories中加载容器初始化器ApplicationContextInitializer.class和容器监听器ApplicationListener.class,并set到SpringApplication()对象。同时,判断application的启动方式:如果引入了javax.servlet.Servlet的jar,则会启动Servlet模式[WebApplicationType.SERVLET],如果引入的jar是spring-boot-starter-webflux,而且没引入servlet相关的jar,则会启动Reactive模式[WebApplicationType.REACTIVE]。 这也是Spring Boot的设计思想:拔插而决定application的启动方式。 image.png

  2. 执行run():

image.png

未完待续...