欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

詳解springboot啟動(dòng)時(shí)是如何加載配置文件application.yml文件

 更新時(shí)間:2020年06月16日 14:35:53   作者:chengkui1990  
這篇文章主要介紹了詳解springboot啟動(dòng)時(shí)是如何加載配置文件application.yml文件,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

今天啟動(dòng)springboot時(shí),明明在resources目錄下面配置了application.yml的文件,但是卻讀不出來,無奈看了下源碼,總結(jié)一下springboot查找配置文件路徑的過程,能力有限,歡迎各位大牛指導(dǎo)?。?!

spring加載配置文件是通過listener監(jiān)視器實(shí)現(xiàn)的,在springboot啟動(dòng)時(shí):


在容器啟動(dòng)完成后會(huì)廣播一個(gè)SpringApplicationEvent事件,而SpringApplicationEvent事件是繼承自ApplicationEvent時(shí)間的,代碼如下:



由于ConfigFileApplicationListener監(jiān)聽器實(shí)現(xiàn)了SmartApplicationListener接口,而SmartApplicationListener接口繼承了ApplicationListener<ApplicationEvent>接口,所以能監(jiān)聽到上面廣播出來的SpringApplicationEvent事件,類的繼承圖如下:

SmartApplicationListener是繼承自ApplicationListener:

在ConfigFileApplicationListener中監(jiān)聽事件的方法:

postProcessEnvironment方法是查找application.yml配置文件的入口方法:

在load方法里面才是真正查找配置文件的過程:

默認(rèn)先讀取的是location,然后是配置文件的名字“application”,最后才是文件類型“properties”或者“yml”;

localtion有多種,可以自行debug:有file:./和file:./config和classpath等目錄;

文件類型默認(rèn)的有四種:properties、xml、yml、yaml

最后查找的具體路徑:location + name + "-" + profile + "." + ext


根據(jù)拼出來的路徑去查找配置文件,一般配置文件都放在classpath目錄下面,當(dāng)讀取到classpath目錄下的配置文件的時(shí)候,程序去加載配置文件:

當(dāng)加載配置文件時(shí),程序先會(huì)讀取配置文件的spring.profiles.active屬性,確定加載什么環(huán)境的配置文件(我是加載dev的):


然后在讀取到的配置文件的屬性加載到profiles隊(duì)列中重新加載配置文件,代碼如下,所以任何項(xiàng)目都必須現(xiàn)有一個(gè)基礎(chǔ)的配置文件,如application.yml,然后在這個(gè)配置文件里面有一個(gè)active屬性;


程序會(huì)先拿到這個(gè)屬性,放到profiles屬性中,重新去加載配置文件如application-dev.yml,程序如下:



注:這篇文章是為了解決配置文件找不到而寫的,是為了解決問題而寫的,主要是解析查找配置文件路徑的過程,具體的解析配置文件的過程,讀者可以細(xì)看源碼,最后我也找到了配置文件為什么找不到的原因,主要是因?yàn)閕dea編譯時(shí),classpath路徑下面沒有application.yml文件,復(fù)制配置文件到classpath目錄下,問題就解決了!

到此這篇關(guān)于詳解springboot啟動(dòng)時(shí)是如何加載配置文件application.yml文件的文章就介紹到這了,更多相關(guān)springboot啟動(dòng)加載application.yml內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java中接口和抽象類的區(qū)別與相同之處

    Java中接口和抽象類的區(qū)別與相同之處

    這篇文章主要介紹了Java中接口和抽象類的區(qū)別與相同之處,本文講解了抽象類的概念、接口的概念、接口和抽象類的區(qū)別與聯(lián)系等內(nèi)容,需要的朋友可以參考下
    2015-06-06
  • springcloud之Feign超時(shí)問題的解決

    springcloud之Feign超時(shí)問題的解決

    這篇文章主要介紹了springcloud之Feign超時(shí)問題的解決方案,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • Java中常用修飾符的使用方法匯總

    Java中常用修飾符的使用方法匯總

    下面小編就為大家?guī)硪黄狫ava中常用修飾符的使用方法匯總。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-01-01
  • 詳解Java編程中Annotation注解對象的使用方法

    詳解Java編程中Annotation注解對象的使用方法

    這篇文章主要介紹了Java編程中Annotation注解對象的使用方法,注解以"@注解名"的方式被編寫,與類、接口、枚舉是在同一個(gè)層次,需要的朋友可以參考下
    2016-03-03
  • Activiti開發(fā)環(huán)境的配置

    Activiti開發(fā)環(huán)境的配置

    本篇文章主要內(nèi)容介紹了Activiti開發(fā)環(huán)境的配置,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-04-04
  • 詳解Java8中Optional的常見用法

    詳解Java8中Optional的常見用法

    Opitonal是java8引入的一個(gè)新類,目的是為了解決空指針異常問題。本文將通過示例為大家詳細(xì)講講Optional的常見用法,需要的可以參考一下
    2022-09-09
  • 你知道將Bean交給Spring容器管理有幾種方式(推薦)

    你知道將Bean交給Spring容器管理有幾種方式(推薦)

    Spring核心是?IOC?和?AOP?,我們在Spring項(xiàng)目中,我們需要將Bean交給Spring容器,也就是IOC管理,這樣你才可以使用注解來進(jìn)行依賴注入,這篇文章主要介紹了你知道將Bean交給Spring容器管理有幾種方式,需要的朋友可以參考下
    2022-10-10
  • 在Spring Boot項(xiàng)目中引入本地JAR包的步驟和配置

    在Spring Boot項(xiàng)目中引入本地JAR包的步驟和配置

    本文探討了在Spring Boot項(xiàng)目中引入本地JAR包的步驟和必要的配置,通過使用Maven的system作用域,開發(fā)者可以將自定義的本地庫或功能集成到Spring Boot應(yīng)用程序中,,需要的朋友可以參考下
    2023-10-10
  • Java虛擬機(jī)工作原理

    Java虛擬機(jī)工作原理

    本文主要介紹了Java虛擬機(jī)的工作原理。具有很好的參考價(jià)值。下面跟著小編一起來看下吧
    2017-03-03
  • Java網(wǎng)絡(luò)編程基礎(chǔ)篇之單向通信

    Java網(wǎng)絡(luò)編程基礎(chǔ)篇之單向通信

    這篇文章主要介紹了Java網(wǎng)絡(luò)編程里通過套接字實(shí)現(xiàn)單向通信的方法及相關(guān)實(shí)例,屬于網(wǎng)絡(luò)編程入門程序,雖然簡單,但具有一定參考價(jià)值,需要的朋友可以參考下。
    2017-09-09

最新評論