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

SpringBoot源碼分析之bootstrap.properties文件加載的原理

 更新時間:2021年12月31日 11:15:20   作者:波波烤鴨  
本文通過訪問看到bootstrap.properties中的信息獲取到了,同時age也被application.properties中的屬性覆蓋掉了。加載順序到底是什么?為什么會覆蓋呢?我們接下來分析下吧

??對于SpringBoot中的屬性文件相信大家在工作中用的是比較多的,對于application.properties和application.yml文件應該非常熟悉,但是對于bootstrap.properties文件和bootstrap.yml這個兩個文件用的估計就比較少了,用過的應該清楚bootstrap.properties中定義的文件信息會先與application.properties中的信息加載。而且大家在使用的時候還經(jīng)常碰到獲取不到bootstrap.properties中定義的信息的困擾,本文就來給大家揭開這些謎團。

1.bootstrap的使用

??首先在SpringBoot中默認是不支持bootstrap.properties屬性文件的。我們需要映入SpringCloud的依賴才可以。

相關的版本環(huán)境

然后創(chuàng)建對應的bootstrap.properties文件,當然你也可以創(chuàng)建bootstrap.yml文件

同步的我們也會創(chuàng)建application.properties文件,其中會覆蓋一個屬性

然后我們在controller中獲取測試

訪問測試:http://localhost:8080/query

通過訪問看到bootstrap.properties中的信息獲取到了,同時age也被application.properties中的屬性覆蓋掉了。加載順序到底是什么?為什么會覆蓋呢?我們接下來分析。

2.bootstrap加載原理分析

??看本文之前最好看下我前面講解的SpringBoot中的監(jiān)聽機制。

2.1 BootstrapApplicationListener

??在使用bootstrap.properties文件時我們需要映入相關的依賴

??其實在這個依賴中會在對應的spring.factories文件中給我們提供新的監(jiān)聽器,也就是BootstrapApplicationListener監(jiān)聽器。

??而BootstrapApplicationListener監(jiān)聽觸發(fā)的事件是ApplicationEnvironmentPreparedEvent事件,這個事件其實和我們前面介紹監(jiān)聽application.properties的時候的監(jiān)聽器ConfigFileApplicationListener監(jiān)聽的是同一個事件。

??如果你看了前面的文章,那么此處你會覺得有點眉目了。也就是當啟動的時候發(fā)布對應的事件,該監(jiān)聽器會觸發(fā)相關的解析行為。

2.2 啟動流程梳理

??搞清楚了監(jiān)聽器的關系后,我們來看下啟動的流程代碼具體是怎么執(zhí)行的。

直接進入

在SpringApplication的構造方法中我們要注意兩點,1.監(jiān)聽器的加載 2.main方法的主類記錄

然后回來進入run方法

Debug到第一個端點。

然后我們放過。

GIF.gif

通過上面的動圖可以看到又進入了一次這個run方法。先看處理的結果。

然后我們再放過,繼續(xù)

分兩次加載,有先右后哦。那么這里面的第一個加載的原理到底是什么呢?繼續(xù)來分析。

2.3 bootstrap.properties的加載原理

??接下來看看是如果出現(xiàn)的一個父context來優(yōu)先加載我們的bootstrap.properteis文件的,還是從這個圖開始

鏈路如上面一步步跟蹤即可。

跳過非關鍵的,直接進入到BootstrapApplicationListener中來看。

然后進入到 bootstrapServiceContext方法中。

這兒我們看到有創(chuàng)建了一個SpringApplication對象。這個其實就是父Context對象了。

進入run方法你會發(fā)現(xiàn),回到了前面

到這應該就清楚了執(zhí)行的核心流程了,至于是如何加載的屬性文件的內容,參考我的上篇文章哦。

到此這篇關于SpringBoot源碼分析之bootstrap.properties文件加載的原理的文章就介紹到這了,更多相關SpringBoot源碼分析文件加載的原理內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Java如何比較兩個任意文件是否相同

    Java如何比較兩個任意文件是否相同

    這篇文章主要為大家詳細介紹了Java如何實現(xiàn)比較兩個任意文件是否相同,文中的示例代碼簡潔易懂,感興趣的小伙伴可以跟隨小編一起學習一下
    2024-04-04
  • SSH原理及兩種登錄方法圖文詳解

    SSH原理及兩種登錄方法圖文詳解

    SSH(Secure Shell)是一套協(xié)議標準,可以用來實現(xiàn)兩臺機器之間的安全登錄以及安全的數(shù)據(jù)傳送,其保證數(shù)據(jù)安全的原理是非對稱加密。本文通過圖文并茂的形式給大家介紹了SSH原理及兩種登錄方法,一起看看吧
    2018-08-08
  • java基于線程池和反射機制實現(xiàn)定時任務完整實例

    java基于線程池和反射機制實現(xiàn)定時任務完整實例

    這篇文章主要介紹了java基于線程池和反射機制實現(xiàn)定時任務的方法,以完整實例形式較為詳細的分析了Java定時任務的功能原理與實現(xiàn)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-11-11
  • SpringBoot公共頁面抽取方法實現(xiàn)過程介紹

    SpringBoot公共頁面抽取方法實現(xiàn)過程介紹

    這篇文章主要介紹了SpringBoot抽取公共頁面的方法實現(xiàn)過程,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習吧
    2022-10-10
  • 在Java中Scanner的用法總結

    在Java中Scanner的用法總結

    這篇文章主要介紹了在Java中Scanner的用法總結,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • Java中的HashMap源碼解析

    Java中的HashMap源碼解析

    這篇文章主要介紹了Java中的HashMap源碼解析,當HashMap中的其中一個鏈表的對象個數(shù)如果達到了8個,此時如果數(shù)組長度沒有達到64,那么HashMap會先擴容解決,如果已經(jīng)達到了64,那么這個鏈表會變成紅黑樹,需要的朋友可以參考下
    2023-12-12
  • Java內存劃分:運行時數(shù)據(jù)區(qū)域

    Java內存劃分:運行時數(shù)據(jù)區(qū)域

    聽說Java運行時環(huán)境的內存劃分是挺進BAT的必經(jīng)之路,這篇文章主要給大家介紹了關于Java運行時數(shù)據(jù)區(qū)域(內存劃分)的相關資料,需要的朋友可以參考下
    2021-07-07
  • MyBatis-Plus通用CRUD操作的實現(xiàn)

    MyBatis-Plus通用CRUD操作的實現(xiàn)

    MyBatis-Plus是基于MyBatis的增強工具,主要目的是簡化MyBatis的使用并提升開發(fā)效率,它提供了通可以用CRUD操作、分頁插件、多種插件支持、自動代碼生成器等功能,感興趣的可以了解一下
    2024-10-10
  • Java泛型的概念、定義與運行方法分析

    Java泛型的概念、定義與運行方法分析

    這篇文章主要介紹了Java泛型的概念、定義與運行方法,結合實例形式分析了java泛型的基本概念、定義與IDEA、命令行兩種運行方法,需要的朋友可以參考下
    2019-08-08
  • 選擇Spring Boot項目的內嵌容器的理由

    選擇Spring Boot項目的內嵌容器的理由

    Spring Boot是由Pivotal團隊提供的全新框架,其設計目的是用來簡化新Spring應用的初始搭建以及開發(fā)過程。這篇文章主要介紹了選擇Spring Boot項目的內嵌容器,需要的朋友可以參考下
    2017-11-11

最新評論

常山县| 乐昌市| 台江县| 北碚区| 通化县| 天峨县| 务川| 都昌县| 前郭尔| 荥经县| 富川| 五台县| 县级市| 黑山县| 平潭县| 平原县| 新蔡县| 武宁县| 铅山县| 福建省| 邳州市| 盘山县| 托克托县| 怀集县| 简阳市| 大埔县| 长垣县| 都昌县| 慈溪市| 张北县| 天津市| 丁青县| 菏泽市| 仙居县| 乌鲁木齐县| 襄城县| 平阳县| 泾川县| 双峰县| 大名县| 钟山县|