Springboot深入解析 框架啟動流程

2021-10-04 12:01:43 字數 1564 閱讀 9250

文章僅從原始碼的角度**springboot2.x的原理,不**使用。

我們知道springboot是靠著這段**進行啟動的。

public

static

void

main

(string[

] args)

分析原始碼的話,理所當然從這裡下手。

public

(class<

?>

primarysources, string[

] args)

public

(resourceloader resourceloader, class<

?>..

. primarysources)

下面看一下run方法,它的內容非常簡短:

(string.

.. args)

, context)

;this

.preparecontext

;this

.refreshcontext

(context)

;this

.afterrefresh

;// 計時器停止計時

stopwatch.

stop()

;if(this

.logstartupinfo)

listeners.

started

(context)

;this

.callrunners;}

catch

(throwable var10)

trycatch

(throwable var9)

}表面上看只有三十多行**,其實背後的**量是非常高的。

框架初始化分為:

配置資源載入器

配置primarysources(一般是我們的啟動類)

應用環境的檢測(springboot1.x版本有兩種環境,標準環境和web環境,spingboot2.x新增了一種reactive環境)

配置系統初始化器

配置應用***

配置main方法所在類

接著就是框架的基本啟動

計時器開始計時

headless模式賦值

配置環境模組

列印banner

建立應用上下文物件

初始化失敗分析器

關聯springboot元件與應用上下文物件

載入sources到context

重新整理上下文(完成bean的載入)

計時器停止計時

呼叫框架啟動擴充套件類

通過以上步驟完成基本的啟動,後面還有框架的自動化裝配的內容:

收集配置檔案中的配置工廠類

載入元件工廠

註冊元件內定義 bean

文字描述,可能不太直觀,這裡用圖示整體梳理一下:

下面一起扣細節吧。

Activity Intent深入解析

學習android sdk有段時間了,對activity intent的學習與使用都比較了解。第一次完整的學習activity intent後,我就感覺這似乎與windows com技術有些似曾相識的感覺,寫了一篇將activity 與 com 做了比較,但是一直感覺意猶未盡,前幾天在程式設計師雜誌...

深入解析IOCP

1.介紹 1.1 高併發伺服器 1 要求大規模的連線 會話可能同時進行 2 列子 web 伺服器,郵件伺服器 1.2 執行緒池架構 1 每個連線分配乙個執行緒,將導致過多的執行緒。2 執行緒消耗記憶體,比如堆疊等等。2.執行緒模型 2.1 基於會話模型 1 每個執行緒服務於乙個客戶端,比如http ...

HTTP 深入解析

1.cookie 儲存在客戶端 cookie 的類別 cookie 的屬性 了解 cookie 的應用場景 同源http請求 攜帶cookie 原生ajax請求方式 xhr.withcredentials true 支援跨域傳送cookies xhr.send jquery的ajax的post方法請...