1. 程式人生 > >SpringBoot(二)SpringBoot 啟動流程

SpringBoot(二)SpringBoot 啟動流程

SpringBoot 啟動流程:

首先我們看看一切的起源——SpringBoot啟動類:

執行main方法,然後呼叫SpringApplication.run()方法,這樣我們的專案就啟動了。是不是很神奇。

那麼我們來看看run方法,他到底為我們做了什麼,一起慢慢剝開這顆洋蔥,看看他的內心是什麼,廢話不多說,直接上原始碼。

各個主要步驟我已經標註在上圖之中了,除此之外,我也按照自己的理解畫了一個流程圖如下所示,可以對照數字標示看一下:

啟動過程是不是很清晰了。哈哈哈。。。

下面我們在詳細的總結一下:

(1)通過 SpringFactoriesLoader 載入 META-INF/spring.factories 檔案,獲取並建立 SpringApplicationRunListener物件

(2)然後由 SpringApplicationRunListener 來發出 starting 訊息

(3)建立引數,並配置當前 SpringBoot 應用將要使用的 Environment

(4)完成之後,依然由 SpringApplicationRunListener 來發出 environmentPrepared 訊息

(5)建立 ApplicationContext

(6)初始化 ApplicationContext,並設定 Environment,載入相關配置等

(7)由 SpringApplicationRunListener 來發出 contextPrepared 訊息,告知SpringBoot 應用使用的 ApplicationContext已準備OK

(8)將各種 beans 裝載入 ApplicationContext,繼續由 SpringApplicationRunListener 來發出 contextLoaded 訊息,告知 SpringBoot 應用使用的 ApplicationContext 已裝填OK

(9)refresh ApplicationContext,完成IoC容器可用的最後一步

(10)由 SpringApplicationRunListener 來發出 started 訊息

(11)完成最終的程式的啟動

(12)由 SpringApplicationRunListener 來發出 running 訊息,告知程式已執行起來了

個人總結:springboot啟動過程

spring boot 2.0在啟動的時候,首先會呼叫SpringApplication的建構函式進行初始化,呼叫例項函式run,在run函式中,首先獲取監聽器,並設定成啟動狀態,後面準備環境prepareEnvironment,準備prepareContext上下文,重新整理上下文refreshContext,最後呼叫callRunners來依次呼叫註冊的Runner。

多寫程式碼多讀書,做個有氣質Coder。