springBoot啓動流程

1.啓動類裏面調用SpringApplication.run(xxx.class,args)方法

2.在SpringApplicaiton的run方法中有兩個步驟,首先建立SpringApplicaiton對象,而後再調用run方法。
3.在SpringApplicaiton構造器中調用initialize(sources)方法。
4.initialize方法中,
a.將sources轉換成list加到this.sources屬性中
b.判斷是否爲web環境(在類路徑下是否能夠加載到Servlet和ConfigurableWebApplicationContext)
c.加載Initializers(經過META-INF/spring.factories中鍵爲ApplicationContextInitializer的配置進行加載),dubug發現一共
加載了6個initializer(spring-boot-1.5.10.RELEASE.jar中4個,spring-boot-autoconfigure-1.5.10.RELEASE.jar中2個)
d.加載ApplicationListener(也是經過META-INF/spring.factories),debug發現共加載了10個
e.經過尋找main方法找到啓動主類。
5.run方法中
a.StopWatch主要是監控啓動過程,統計啓動時間,檢測應用是否已經啓動或者中止。
b.加載SpringApplicationRunListener(也是經過META-INF/spring.factories),默認加載的是EventPublishingRunListener
c.調用RunListener.starting()方法。
d.根據args建立應用參數解析器ApplicationArguments;
e.準備環境變量:獲取環境變量environment,將應用參數放入到環境變量持有對象中,監聽器監聽環境變量對象的變化(listener.environmentPrepared)
f.打印Banner信息(SpringBootBanner)
g.建立SpringBoot的應用上下文(AnnotationConfigEmbeddedWebApplicationContext)
h.prepareContext上下文以前的準備
i.refreshContext刷新上下文
j.afterRefresh(ApplicationRunner,CommandLineRunner接口實現類的啓動)
k.返回上下文對象
相關文章
相關標籤/搜索