springboot如何查找配置文件路徑的順序和其優(yōu)先級(jí)別
查找配置文件路徑的順序和其優(yōu)先級(jí)別
提示:以下是本篇文章正文內(nèi)容,下面案例僅供參考
一、springboot查找配置文件路徑的順序和其優(yōu)先級(jí)別
在項(xiàng)目類(lèi),有四個(gè)地方系統(tǒng)會(huì)自動(dòng)掃描:
1.file:/config/
2.file:/
3.classPath:/config/
4.classPath:/
1)其文件生效優(yōu)先級(jí)別,從上到下,即如果在不同路徑有相同屬性,會(huì)優(yōu)先選擇上面的路徑屬性(1>2>3>4)
2)路徑掃描順序和其優(yōu)先級(jí)別相反(4>3>2>1),后面的會(huì)覆蓋前面的,并且所有路徑都會(huì)掃描,形成互補(bǔ)。
二、同路徑下
application.properties(application.yml)、bootstrap.properties(bootstrap.yml)加載順序及優(yōu)先級(jí)別
1.application和bootstrap比較(前綴比較)
提示:bootstrap類(lèi)型文件是在多服務(wù)項(xiàng)目時(shí),引入了springcloud相關(guān)配置才會(huì)生效,springboot并不會(huì)自動(dòng)掃描bootstrap文件,只會(huì)掃描application文件,所以?xún)烧叩谋容^只有在spingcloud多服務(wù)項(xiàng)目中才有意義。
1)先后加載順序:若application 和bootstrap 在同一目錄下:bootstrap先加載 application后加載
2)優(yōu)先級(jí)問(wèn)題:Bootstrap 屬性有高優(yōu)先級(jí),默認(rèn)情況下,它們不會(huì)被本地配置覆蓋。(這個(gè)是網(wǎng)上和官方的說(shuō)法,但經(jīng)過(guò)本人的測(cè)試,發(fā)現(xiàn)application 會(huì)覆蓋bootstrap,我的理解是不是所有的bootstrap屬性都比application優(yōu)先,只有涉及底層系統(tǒng)相關(guān)配置才會(huì)比較高 ,有不同看法的老哥歡迎探討)
3)區(qū)別:bootstrap 和 application 都可以用來(lái)配置參數(shù)。
bootstrap 用來(lái)程序引導(dǎo)時(shí)執(zhí)行,應(yīng)用于更加早期配置信息讀取??梢岳斫獬上到y(tǒng)級(jí)別的一些參數(shù)配置,這些參數(shù)一般是不會(huì)變動(dòng)的。一旦bootstrap被加載,則內(nèi)容不會(huì)被覆蓋。
application.yml 可以用來(lái)定義應(yīng)用級(jí)別的, 應(yīng)用程序特有配置信息,可以用來(lái)配置后續(xù)各個(gè)模塊中需使用的公共參數(shù)等。
4)bootstrap典型的應(yīng)用場(chǎng)景(經(jīng)典三點(diǎn))
- 1.當(dāng)使用 Spring Cloud Config Server 配置中心時(shí),這時(shí)需要在 bootstrap.yml 指定 spring.applicatio配置文件中n.name 和 spring.cloud.config.server.git.uri,添加連接到配置中心的配置屬性來(lái)加載外部配置中心的配置信息
- 2.一些固定的不能被覆蓋的屬性
- 3.一些加密/解密的場(chǎng)景
2. .properties和.yml比較(后綴比較)
1)加載順序
.yml先于.properties
2)優(yōu)先級(jí)別
.properties優(yōu)先于.yml,因?yàn)?properties后加載會(huì)覆蓋.yml
3)區(qū)別
- 1.yml擁有天然的樹(shù)狀結(jié)構(gòu),properties是鍵值對(duì);
- 2.在properties文件中是以”.”進(jìn)行分割的, 在.yml中是用”:”進(jìn)行分割;
- 3.在.yml中縮進(jìn)一定不能使用TAB,否則會(huì)報(bào)很奇怪的錯(cuò)誤;;
- 4.yml比.properties對(duì)中文對(duì)支持更友好。
- 5.yml是跨語(yǔ)言的:可以在包括JAVA,go,python等大量的語(yǔ)言中使用,比如做云計(jì)算使用go和java的時(shí)候,可以通過(guò)配置中心使用同一份配置!
- 6.在自定義配置文件時(shí),只能使用properties,因?yàn)閟pring只有@PropertiesSource注解可以引入自定義注解,對(duì)yml沒(méi)有支持
小結(jié):在同級(jí)目錄下,優(yōu)先級(jí)別application>bootstrap,.properties>,yml,前綴大于后綴,文件路徑大于文件名稱(chēng)
springboot配置文件不生效的原因
1、將打包方式改為jar 。
<packaging>jar</packaging>
2、可能是yml文件縮近格式不對(duì),仔細(xì)檢查一下就行了。
3、還有就是你的根本就不是boot項(xiàng)目,application.yml沒(méi)有葉子標(biāo)志
1.點(diǎn)開(kāi)項(xiàng)目結(jié)構(gòu)
2.打開(kāi)模塊一次點(diǎn)擊
3.
4.重構(gòu)項(xiàng)目
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- SpringBoot中的配置文件加載優(yōu)先級(jí)詳解
- 關(guān)于SpringBoot配置文件加載位置的優(yōu)先級(jí)
- springBoot項(xiàng)目配置文件加載優(yōu)先級(jí)及同配置覆蓋問(wèn)題詳解
- 一問(wèn)詳解SpringBoot配置文件優(yōu)先級(jí)
- Java springboot探究配置文件優(yōu)先級(jí)
- Java springboot 配置文件與多環(huán)境配置與運(yùn)行優(yōu)先級(jí)
- SpringBoot配置文件的優(yōu)先級(jí)順序、加載順序、bootstrap.yml與application.yml區(qū)別及說(shuō)明
相關(guān)文章
基于html5+java實(shí)現(xiàn)大文件上傳實(shí)例代碼
本文通過(guò)一段實(shí)例代碼給大家介紹基于html5+java實(shí)現(xiàn)大文件上傳,涉及到html5 java 文件上傳相關(guān)知識(shí),感興趣的朋友一起學(xué)習(xí)吧2016-01-01基于Ant路徑匹配規(guī)則AntPathMatcher的注意事項(xiàng)
這篇文章主要介紹了基于Ant路徑匹配規(guī)則AntPathMatcher的注意事項(xiàng),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-11-11深入淺析Spring Security5中默認(rèn)密碼編碼器
這篇文章主要介紹了Spring Security5中默認(rèn)密碼編碼器,非常不錯(cuò),具有一定的參考借鑒價(jià)值 ,需要的朋友可以參考下2019-05-05java中BigDecimal進(jìn)行加減乘除的基本用法
大家應(yīng)該對(duì)于不需要任何準(zhǔn)確計(jì)算精度的數(shù)字可以直接使用float或double運(yùn)算,但是如果需要精確計(jì)算的結(jié)果,則必須使用BigDecimal類(lèi),而且使用BigDecimal類(lèi)也可以進(jìn)行大數(shù)的操作。下面這篇文章就給大家介紹介紹關(guān)于java中BigDecimal進(jìn)行加減乘除的基本用法。2016-12-12老生常談spring?boot中的定時(shí)任務(wù)
SpringBoot中的定時(shí)任務(wù)主要通過(guò)@Scheduled注解以及SchedulingConfigurer接口實(shí)現(xiàn),本文給大家介紹spring?boot中的定時(shí)任務(wù),感興趣的朋友跟隨小編一起看看吧2024-05-05java 中動(dòng)態(tài)代理(JDK,cglib)實(shí)例代碼
這篇文章主要介紹了java 中動(dòng)態(tài)代理,這里介紹了JDK 動(dòng)態(tài)代理與 cglib 動(dòng)態(tài)代理的相關(guān)資料2017-04-04Java數(shù)據(jù)導(dǎo)入功能之讀取Excel文件實(shí)例
這篇文章主要介紹了Java數(shù)據(jù)導(dǎo)入功能之讀取Excel文件實(shí)例,本文給出了jar包的下載地址以及讀取Excel文件的代碼實(shí)例,需要的朋友可以參考下2015-06-06