日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

SpringBoot 有兩個關鍵元素:

@SpringBootApplicationSpringApplication 以及 run() 方法

 

SpringApplication 這個類應該算是 Spring Boot 框架的“創新”產物了,原始的 Spring 中并沒有這個類,SpringApplication 中封裝了一套 Spring 應用的啟動流程,然而這對用戶完全透明,因此我們上手 Spring Boot 時感覺很簡潔、輕量。

 

一般來說默認的 SpringApplication 執行流程已經可以滿足大部分需求,但是若用戶想干預這個過程,則可以通過 SpringApplication 在流程某些地方開啟擴展點來完成對流程的擴展,典型的擴展方案那就是使用 set 方法。

 

比如,把我們天天司空見慣的 Spring Boot 應用的啟動類來拆解一下寫出來就是這樣:

@SpringBootApplication public class CodeSheepApplication { public static void main( String[] args ) { //SpringApplication.run( CodeSheepApplication.class args ); SpringApplication app = new SpringApplication( CodeSheepApplication.class ); app.setXXX( ... ); // 用戶自定的擴展在此 !!! app.run( args ); } }

 

這樣一拆解后我們發現,我們也需要先構造 SpringApplication 類對象,然后調用該對象的 run() 方法。那么接下來就講講 SpringApplication 的構造過程 以及其 run() 方法的流程,搞清楚了這個,那么也就搞清楚了SpringBoot應用是如何運行起來的!

 

SpringApplication 實例的初始化我們對照代碼來看:

Spring Boot 應用程序啟動流程分析

 

四個關鍵的步驟已標注在圖中,分別解釋如下:

① 推斷應用的類型:創建的是 REACTIVE應用、SERVLET應用、NONE 三種中的某一種

Spring Boot 應用程序啟動流程分析

 

② 使用 SpringFactoriesLoader查找并加載 classpath下 META-INF/spring.factories文件中所有可用的 ApplicationContextInitializer

Spring Boot 應用程序啟動流程分析

 

 

 

③ 使用 SpringFactoriesLoader查找并加載 classpath下 META-INF/spring.factories文件中的所有可用的 ApplicationListener

Spring Boot 應用程序啟動流程分析

 

 

 

④ 推斷并設置 main方法的定義類

Spring Boot 應用程序啟動流程分析

 

 

 

SpringApplication 的run()方法探秘先看看代碼長啥樣子:

Spring Boot 應用程序啟動流程分析

 

 

 

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

Spring Boot 應用程序啟動流程分析

 

 

 

我們將各步驟總結精煉如下:

 

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 消息,告知程序已運行起來了

 

至此,全流程結束!


聲明:本文轉載自蛙課網官方網站

分享到:
標簽:Spring Boot
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定