隨著我們ctrl加滑鼠左鍵的使用,最終我們會在乙個springboot專案中發現啟動過程由以下兩個過程組成
構造過程:
public
(resourceloader resourceloader, class<
?>..
. primarysources)
run方法:
(string.
.. args)
, context)
;//這個也很重要,讓我們的容器準備好,大概做了以下事情
//1. 設定了上面的「環境」
//2. 一些設定,其中包括resourceloader的設定
//3. 把之前載入的initializer全部執行他們的initialize()方法
//4. 環境變數產生的listenner,即上述的listeners,知會contextprepared事件
//5. 把引數作為乙個bean放在容器中
//6. 把banner作為乙個bean放在容器中
//7. 通過load方法生成乙個beandefinitionloader,這個是用來解析我們的自定義bean的
preparecontext
;//重新整理我們的容器,銷毀原有的beanfactory,重新生成beanfactory以及生成所有的beandefinitions
//beanfactory和beandefinition是幹什麼用的,這個就是經典的ioc原理了,網上很多
refreshcontext
(context)
;//接下來的東西不重要了
afterrefresh
; stopwatch.
stop()
;if(this
.logstartupinfo)
listeners.
started
(context)
;callrunners;}
catch
(throwable ex)
trycatch
(throwable ex)
return context;
}
springboot 啟動流程
this.resourceloader resourceloader assert.notnull primarysources,primarysources must not be null this.primarysources new linkedhashset arrays.aslist p...
springboot啟動流程
本文以除錯乙個實際的springboot啟動程式為例,參考流程中主要類類圖,來分析其啟動邏輯和自動化配置原理。2.載入springboot配置環境 configurableenvironment 如果是通過web容器發布,會載入standardenvironment,其最終也是繼承了configur...
springboot啟動流程
1 判斷當前類是web的serverlet 2 載入所有的初始化器 3 載入所有的 4 設定程式執行的主類 2 執行run方法 1 建立計時器物件開始計時 2 設定handless的屬性並設定到系統屬性中 3 初始化 getrunlister 4 啟動準備好的 5 設定命令列引數 6 準備環境物件 ...