最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Spring?Boot面試必問(wèn)之啟動(dòng)流程知識(shí)點(diǎn)詳解

 更新時(shí)間:2022年06月29日 10:42:16   作者:iijik55  
SpringBoot是Spring開(kāi)源組織下的子項(xiàng)目,是Spring組件一站式解決方案,主要是簡(jiǎn)化了使用Spring的難度,簡(jiǎn)省了繁重的配置,提供了各種啟動(dòng)器,開(kāi)發(fā)者能快速上手,這篇文章主要給大家介紹了關(guān)于Spring?Boot面試必問(wèn)之啟動(dòng)流程知識(shí)點(diǎn)的相關(guān)資料,需要的朋友可以參考下

一 面試提問(wèn)

1.1 Spring Boot啟動(dòng)流程

???面試官:說(shuō)說(shuō)SpringBoot啟動(dòng)流程吧

??

  1. 首先從main找到run()方法,在執(zhí)行run()方法之前new一個(gè)SpringApplication對(duì)象
  2. 進(jìn)入run()方法,創(chuàng)建應(yīng)用監(jiān)聽(tīng)器SpringApplicationRunListeners開(kāi)始監(jiān)聽(tīng)
  3. 然后加載SpringBoot配置環(huán)境(ConfigurableEnvironment),然后把配置環(huán)境(Environment)加入監(jiān)聽(tīng)對(duì)象中
  4. 然后加載應(yīng)用上下文(ConfigurableApplicationContext),當(dāng)做run方法的返回對(duì)象
  5. 最后創(chuàng)建Spring容器,refreshContext(context),實(shí)現(xiàn)starter自動(dòng)化配置和bean的實(shí)例化等工作。

1.2 SpringBoot自動(dòng)裝配

???面試官:說(shuō)說(shuō)SpringBoot自動(dòng)配置的原理

?? :通過(guò)@EnableAutoConfiguration注解在類路徑的META-INF/spring.factories文件中找到所有的對(duì)應(yīng)配置類,然后將這些自動(dòng)配置類加載到spring容器中。

二 知識(shí)點(diǎn)詳解

2.1 SpringBoot核心注解:

@SpringBootApplication注解是Spring Boot的核心注解,它其實(shí)是一個(gè)組合注解,包括三個(gè)注解

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

2、@EnableAutoConfiguration:SpringBoot根據(jù)應(yīng)用所聲明的依賴來(lái)對(duì)Spring框架進(jìn)行自動(dòng)配置,其中包括兩個(gè)重要注解:

  1. @AutoConfigurationPackage:該注解上有一個(gè)@Import({Registrar.class})注解,其中Registrar類的作用是將啟動(dòng)類所在的包下的所有子包組件掃描注入到spring容器中。
    因此這就是為什么將controller、service等包放在啟動(dòng)類的同級(jí)目錄下的原因
  2. @Import({AutoConfigurationImportSelector.class}):其中AutoConfigurationImportSelector類中有一個(gè)getCandidateConfigurations()方法,這個(gè)方法通過(guò)SpringFactoriesLoader.loadFactoryNames()查找位于META-INF/spring.factories文件中的所有自動(dòng)配置類并加載這些類。

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

2.2詳細(xì)啟動(dòng)流程(結(jié)合源碼)

首先進(jìn)入run()方法,run方法中new創(chuàng)建了一個(gè)SpringApplication實(shí)例

public static ConfigurableApplicationContext run(Class<?>[] primarySources, String[] args) {
        return (new SpringApplication(primarySources)).run(args);
    }

在SpringApplication的構(gòu)造方法里為SpringApplication對(duì)象賦一些初值。

構(gòu)造方法執(zhí)行完后,回到run()方法

該方法中實(shí)現(xiàn)了如下幾個(gè)關(guān)鍵步驟:

  1. 創(chuàng)建了應(yīng)用的監(jiān)聽(tīng)器SpringApplicationRunListeners并開(kāi)始監(jiān)聽(tīng)
  2. 加載SpringBoot配置環(huán)境(ConfigurableEnvironment),如果是通過(guò)web容器發(fā)布,會(huì)加載StandardEnvironment,其最終也是繼承了ConfigurableEnvironment
  3. 配置環(huán)境(Environment)加入到監(jiān)聽(tīng)器對(duì)象中(SpringApplicationRunListeners)
  4. 創(chuàng)建run方法的返回對(duì)象:ConfigurableApplicationContext(應(yīng)用配置上下文)
  5. 回到run方法內(nèi),prepareContext方法將listeners、environment、applicationArguments、banner等重要組件與上下文對(duì)象關(guān)聯(lián)
  6. 接下來(lái)的refreshContext(context)方法(初始化方法如下)將是實(shí)現(xiàn)spring-boot-starter-*(mybatis、redis等)自動(dòng)化配置的關(guān)鍵,包括spring.factories的加載,bean的實(shí)例化等核心工作。

配置結(jié)束后,Springboot做了一些基本的收尾工作,返回了應(yīng)用環(huán)境上下文?;仡櫿w流程,Springboot的啟動(dòng),主要?jiǎng)?chuàng)建了配置環(huán)境(environment)、事件監(jiān)聽(tīng)(listeners)、應(yīng)用上下文(applicationContext),并基于以上條件,在容器中開(kāi)始實(shí)例化我們需要的Bean,至此,通過(guò)SpringBoot啟動(dòng)的程序已經(jīng)構(gòu)造完成。

總結(jié)

到此這篇關(guān)于Spring Boot面試必問(wèn)之啟動(dòng)流程的文章就介紹到這了,更多相關(guān)SpringBoot啟動(dòng)流程內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java commons-httpclient如果實(shí)現(xiàn)get及post請(qǐng)求

    Java commons-httpclient如果實(shí)現(xiàn)get及post請(qǐng)求

    這篇文章主要介紹了Java commons-httpclient如果實(shí)現(xiàn)get及post請(qǐng)求,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-09-09
  • maven引入kabeja依賴的實(shí)現(xiàn)步驟

    maven引入kabeja依賴的實(shí)現(xiàn)步驟

    本文主要介紹了maven引入kabeja依賴的實(shí)現(xiàn)步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-09-09
  • Java+opencv3.2.0實(shí)現(xiàn)hough圓檢測(cè)功能

    Java+opencv3.2.0實(shí)現(xiàn)hough圓檢測(cè)功能

    這篇文章主要為大家詳細(xì)介紹了Java+opencv3.2.0實(shí)現(xiàn)hough圓檢測(cè),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-02-02
  • JAVA實(shí)現(xiàn)Base64編碼的三種方式

    JAVA實(shí)現(xiàn)Base64編碼的三種方式

    本文主要介紹了JAVA實(shí)現(xiàn)Base64編碼的三種方式,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • Windows使用多個(gè)JDK的方法詳解

    Windows使用多個(gè)JDK的方法詳解

    本文介紹了如何在Windows系統(tǒng)中同時(shí)使用多個(gè)JDK版本(JDK8和JDK21),并詳細(xì)描述了修改環(huán)境變量和Path變量的步驟,以實(shí)現(xiàn)JDK版本的切換
    2024-12-12
  • Java線程創(chuàng)建的四種方式總結(jié)

    Java線程創(chuàng)建的四種方式總結(jié)

    這篇文章主要介紹了Java線程創(chuàng)建的四種方式,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-09-09
  • SpringBoot使用Swagger生成多模塊的API文檔

    SpringBoot使用Swagger生成多模塊的API文檔

    這篇文章將以?Spring?Boot?多模塊項(xiàng)目為例,為大家詳細(xì)介紹一下如何使用?Swagger?生成多模塊的?API?文檔,感興趣的小伙伴可以了解一下
    2025-02-02
  • 你知道怎么從Python角度學(xué)習(xí)Java基礎(chǔ)

    你知道怎么從Python角度學(xué)習(xí)Java基礎(chǔ)

    這篇文章主要為大家詳細(xì)介紹了Python角度學(xué)習(xí)Java基礎(chǔ)的方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2022-02-02
  • Java設(shè)計(jì)模式之Strategy模式

    Java設(shè)計(jì)模式之Strategy模式

    Strategy模式即策略模式,就是將一個(gè)算法的不同實(shí)現(xiàn)封裝成一個(gè)個(gè)單獨(dú)的類,這些類實(shí)現(xiàn)同一個(gè)接口,使用者直接使用該接口來(lái)訪問(wèn)具體的算法。這個(gè)樣子,使用者就可以使用不同的算法來(lái)實(shí)現(xiàn)業(yè)務(wù)邏輯了。
    2016-07-07
  • SpringBoot上傳文件大小受限問(wèn)題的解決辦法

    SpringBoot上傳文件大小受限問(wèn)題的解決辦法

    最近有一次由于項(xiàng)目升級(jí)發(fā)現(xiàn)了一個(gè)上傳方面的問(wèn)題,下面這篇文章主要給大家介紹了關(guān)于SpringBoot上傳文件大小受限問(wèn)題的解決辦法,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-05-05

最新評(píng)論

富川| 汝城县| 赤城县| 宁阳县| 石景山区| 西华县| 竹北市| 那坡县| 军事| 镇沅| 清原| 保山市| 鄂温| 绥德县| 泾川县| 永济市| 博客| 通海县| 疏附县| 甘德县| 崇礼县| 保山市| 连南| 浮梁县| 江都市| 宾川县| 牡丹江市| 扶风县| 堆龙德庆县| 固始县| 大姚县| 芦溪县| 泸溪县| 大庆市| 德保县| 剑河县| 涿州市| 星座| 兴义市| 宜阳县| 安宁市|