女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

說說SpringBoot啟動流程吧

jf_ro2CN3Fa ? 來源:CSDN ? 2023-03-28 17:52 ? 次閱讀

一 面試提問

1.1 Spring Boot啟動流程

面試官:說說SpringBoot啟動流程吧

我 :

首先從main找到run()方法,在執行run()方法之前new一個SpringApplication對象

進入run()方法,創建應用監聽器SpringApplicationRunListeners開始監聽

然后加載SpringBoot配置環境(ConfigurableEnvironment),然后把配置環境(Environment)加入監聽對象中

然后加載應用上下文(ConfigurableApplicationContext),當做run方法的返回對象

最后創建Spring容器,refreshContext(context),實現starter自動化配置和bean的實例化等工作。

1.2 SpringBoot自動裝配

面試官:說說SpringBoot自動配置的原理

我: 通過@EnableAutoConfiguration注解在類路徑的META-INF/spring.factories文件中找到所有的對應配置類,然后將這些自動配置類加載到spring容器中。

二 知識點詳解

2.1 SpringBoot核心注解:

@SpringBootApplication注解是Spring Boot的核心注解,它其實是一個組合注解,包括三個注解

1、@Configuration: 被標注的類等于在Spring的XML配置文件中(applicationContext.xml),裝配所有bean事務,提供了一個Spring的上下文環境

2、@EnableAutoConfiguration: SpringBoot根據應用所聲明的依賴來對Spring框架進行自動配置,其中包括兩個重要注解:

@AutoConfigurationPackage:該注解上有一個@Import({Registrar.class})注解,其中Registrar類的作用是將啟動類所在的包下的所有子包組件掃描注入到spring容器中。

因此這就是為什么將controller、service等包放在啟動類的同級目錄下的原因

@Import({AutoConfigurationImportSelector.class}):其中AutoConfigurationImportSelector類中有一個getCandidateConfigurations()方法,這個方法通過SpringFactoriesLoader.loadFactoryNames()查找位于META-INF/spring.factories文件中的所有自動配置類并加載這些類。

47c39daa-cd36-11ed-bfe3-dac502259ad0.png

3、@ComponentScan: 組件掃描,自動掃描和裝配Bean,掃描SpringApplication的run方法中的ExammanagerApplication.class所在的包路徑下的文件,因此將啟動類(main)放在跟包路徑下。它去尋找帶有@Component注解的類,并為其創建bean。

2.2詳細啟動流程(結合源碼)

1.首先進入run()方法,run方法中new創建了一個SpringApplication實例

publicstaticConfigurableApplicationContextrun(Class[]primarySources,String[]args){
return(newSpringApplication(primarySources)).run(args);
}

2.在SpringApplication的構造方法里為SpringApplication對象賦一些初值。

47cb174c-cd36-11ed-bfe3-dac502259ad0.png

3.構造方法執行完后,回到run()方法

47f4e96e-cd36-11ed-bfe3-dac502259ad0.png

該方法中實現了如下幾個關鍵步驟:

創建了應用的監聽器SpringApplicationRunListeners并開始監聽

加載SpringBoot配置環境(ConfigurableEnvironment),如果是通過web容器發布,會加載StandardEnvironment,其最終也是繼承了ConfigurableEnvironment

配置環境(Environment)加入到監聽器對象中(SpringApplicationRunListeners)

創建run方法的返回對象:ConfigurableApplicationContext(應用配置上下文)

回到run方法內,prepareContext方法將listeners、environment、applicationArguments、banner等重要組件與上下文對象關聯

接下來的refreshContext(context)方法(初始化方法如下)將是實現spring-boot-starter-*(mybatis、redis等)自動化配置的關鍵,包括spring.factories的加載,bean的實例化等核心工作。

480b5492-cd36-11ed-bfe3-dac502259ad0.png

配置結束后,Springboot做了一些基本的收尾工作,返回了應用環境上下文。回顧整體流程,Springboot的啟動,主要創建了配置環境(environment)、事件監聽(listeners)、應用上下文(applicationContext),并基于以上條件,在容器中開始實例化我們需要的Bean,至此,通過SpringBoot啟動的程序已經構造完成。





審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • XML
    XML
    +關注

    關注

    0

    文章

    188

    瀏覽量

    33535
  • Web服務器
    +關注

    關注

    0

    文章

    138

    瀏覽量

    24742
  • 監聽器
    +關注

    關注

    0

    文章

    12

    瀏覽量

    14569
  • SpringBoot
    +關注

    關注

    0

    文章

    175

    瀏覽量

    307

原文標題:字節:SpringBoot 啟動流程

文章出處:【微信號:芋道源碼,微信公眾號:芋道源碼】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦
    熱點推薦

    SpringBoot中的Druid介紹

    SpringBoot中Druid數據源配置
    發表于 05-07 09:21

    SpringBoot知識總結

    SpringBoot干貨學習總結
    發表于 08-01 10:40

    怎么學習SpringBoot

    SpringBoot學習之路(X5)- 整合JPA
    發表于 06-10 14:52

    怎樣去使用springboot

    怎樣去使用springboot呢?學習springboot需要懂得哪些?
    發表于 10-25 07:13

    SpringBoot嵌入式Servlet容器啟動原理是什么

    SpringBoot嵌入式Servlet容器啟動原理思維導圖
    發表于 12-20 07:26

    SpringBoot應用啟動運行run方法

    什么時候創建嵌入式的Servlet容器工廠?什么時候獲取嵌入式的Servlet容器并啟動Tomcat;獲取嵌入式的Servlet容器工廠:1)、SpringBoot應用啟動運行run方法2
    發表于 12-20 06:16

    嵌入式Servlet容器啟動原理

    SpringBoot源碼學習系列之嵌入式Servlet容器啟動原理SpringBoot的自動配置就是SpringBoot的精髓所在,對于Spring
    發表于 12-22 07:23

    Springboot是如何獲取自定義異常并進行返回的

    源碼剖析Springboot是如何獲取自定義異常并進行返回的。來吧!第一步:肯定是在Springboot啟動的過程中進行的異常處理初始化,于是就找到了handlerExceptionResolver類
    發表于 03-22 14:15

    基于ARM的Bootloader啟動流程研究

    基于ARM的Bootloader啟動流程研究
    發表于 10-30 16:22 ?10次下載
    基于ARM的Bootloader<b class='flag-5'>啟動</b><b class='flag-5'>流程</b>研究

    SpringBoot如何實現啟動過程中執行代碼

    目前開發的SpringBoot項目在啟動的時候需要預加載一些資源。而如何實現啟動過程中執行代碼,或啟動成功后執行,是有很多種方式可以選擇,我們可以在static代碼塊中實現,也可以在構
    的頭像 發表于 06-20 17:32 ?1622次閱讀

    什么是 SpringBoot

    本文從為什么要有 `SpringBoot`,以及 `SpringBoot` 到底方便在哪里開始入手,逐步分析了 `SpringBoot` 自動裝配的原理,最后手寫了一個簡單的 `start` 組件,通過實戰來體會了 `
    的頭像 發表于 04-07 11:28 ?1617次閱讀
    什么是 <b class='flag-5'>SpringBoot</b>?

    SpringBoot的核心注解1

    今天跟大家來探討下SpringBoot的核心注解@SpringBootApplication以及run方法,理解下springBoot為什么不需要XML,達到零配置
    的頭像 發表于 04-07 14:34 ?878次閱讀
    <b class='flag-5'>SpringBoot</b>的核心注解1

    SpringBoot的核心注解2

    今天跟大家來探討下SpringBoot的核心注解@SpringBootApplication以及run方法,理解下springBoot為什么不需要XML,達到零配置
    的頭像 發表于 04-07 14:34 ?2130次閱讀
    <b class='flag-5'>SpringBoot</b>的核心注解2

    使用springboot完成流程的業務功能

    圖 使用springboot開發流程使用的接口完成流程的業務功能 基于 Spring Boot + MyBatis Plus + Vue Element 實現的后臺管理系統 + 用戶小程序,支持 RBAC
    的頭像 發表于 05-15 17:40 ?1082次閱讀
    使用<b class='flag-5'>springboot</b>完成<b class='flag-5'>流程</b>的業務功能

    springboot啟動流程

    。 Spring Boot 的啟動流程可以分為以下幾個步驟:初始化啟動環境、加載自動配置類、創建 Spring 上下文、啟動嵌入式服務器。 初始化
    的頭像 發表于 11-22 16:04 ?820次閱讀