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件事:
-
实例化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的启动方式。 -
执行run():
未完待续...