springboot 的啓動流程

1.咱們springboot 項目的啓動類以下。spring

方式1tomcat

@SpringBootApplication
public class SpringbootZkLockApplication {
public static void main(String[] args) {
SpringApplication.run(SpringbootZkLockApplication.class, args);
}
}
點擊 run 方法源碼進入以下,
/**
* Static helper that can be used to run a {@link SpringApplication} from the
* specified source using default settings.
* @param primarySource the primary source to load
* @param args the application arguments (usually passed from a Java main method)
* @return the running {@link ApplicationContext}
*/
public static ConfigurableApplicationContext run(Class<?> primarySource, String... args) {
return run(new Class<?>[] { primarySource }, args);
}
繼續 點擊 run 方法進入源碼,
/**
* Static helper that can be used to run a {@link SpringApplication} from the
* specified sources using default settings and user supplied arguments.
* @param primarySources the primary sources to load
* @param args the application arguments (usually passed from a Java main method)
* @return the running {@link ApplicationContext}
*/
public static ConfigurableApplicationContext run(Class<?>[] primarySources, String[] args) {
return new SpringApplication(primarySources).run(args);
}
咱們看到 run() 方法的返回值爲 ConfigurableApplicationContext。
看到這裏咱們就知道了SpringBoot 啓動類的底層 是 new SpringApplication(primarySources).run(args);
這時候咱們的啓動類能夠能夠換成 以下方式啓動。
方式2
@SpringBootApplication
public class SpringbootZkLockApplication {

public static void main(String[] args) {
//SpringApplication.run(SpringbootZkLockApplication.class, args);
new SpringApplication(SpringbootZkLockApplication.class).run(args);
}
new SpringApplication(SpringbootZkLockApplication.class).run(args); 能夠拆分爲2個部分啓動
方式3
@SpringBootApplication
public class SpringbootZkLockApplication {

public static void main(String[] args) {
//SpringApplication.run(SpringbootZkLockApplication.class, args);
SpringApplication application = new SpringApplication(SpringbootZkLockApplication.class);
application.run(args);
}
}
上面這三種啓動方式都是等價的,均可以啓動 SpringBoot 項目。只不過是第一種方式是咱們經常使用的,通過SpringBoot 封裝過的啓動方式。 
@EnableAutoConfiguration 註解 加載了咱們第三方配置的信息進行 Tomcat 啓動。
DispatcherServletAutoConfiguration ---》ServletWebServerFactoryAutoConfiguration  建立 tomcat。
相關文章
相關標籤/搜索