springcloud本地配置優(yōu)先方式
springcloud本地配置優(yōu)先
如果我們的項(xiàng)目使用了遠(yuǎn)程配置中心,就會(huì)使用遠(yuǎn)程配置優(yōu)先??稍趯?shí)際開(kāi)發(fā)中,通常我們需要本地的部分配置優(yōu)先于遠(yuǎn)程配置,方便開(kāi)發(fā)調(diào)試。
spring cloud為我們提供了相關(guān)的配置:
使用propertise配置
1.不適用遠(yuǎn)程配置
默認(rèn)值是true,不要調(diào)整成false, 可以不配置,使用默認(rèn)即可
# 如果想要遠(yuǎn)程配置優(yōu)先級(jí)高,那么 allow-override 設(shè)置為 false,如果想要本地配置優(yōu)先級(jí)高那么 allow-override 設(shè)置為 true spring.cloud.config.allow-override=true
2.本地文件優(yōu)先
# 如果本地配置優(yōu)先級(jí)高,那么 override-none 設(shè)置為 true,包括系統(tǒng)環(huán)境變量、本地配置文件等配置 spring.cloud.config.override-none=true
3.遠(yuǎn)程配置只覆蓋本地配置文件
# 只有系統(tǒng)環(huán)境變量或者系統(tǒng)屬性才能覆蓋遠(yuǎn)程配置文件的配置,本地配置文件中配置優(yōu)先級(jí)低于遠(yuǎn)程配置;注意本地配置文件不是系統(tǒng)屬性 spring.cloud.config.override-system-properties=false
2或3任意配置即可,只會(huì)生效一種。
使用yml配置同properties一樣:
spring:
cloud:
config:
# 如果本地配置優(yōu)先級(jí)高,那么 override-none 設(shè)置為 true,包括系統(tǒng)環(huán)境變量、本地配置文件等配置
override-none: true
# 如果想要遠(yuǎn)程配置優(yōu)先級(jí)高,那么 allow-override 設(shè)置為 false,如果想要本地配置優(yōu)先級(jí)高那么 allow-override 設(shè)置為 true
allow-override: true
# 只有系統(tǒng)環(huán)境變量或者系統(tǒng)屬性才能覆蓋遠(yuǎn)程配置文件的配置,本地配置文件中配置優(yōu)先級(jí)低于遠(yuǎn)程配置;注意本地配置文件不是系統(tǒng)屬性
override-system-properties: false配置到這里,可能就會(huì)去嘗試。不過(guò)當(dāng)你配置完成后會(huì)發(fā)覺(jué),好像配置沒(méi)有生效。
不要著急,我們繼續(xù)分析。
上源碼:
org.springframework.cloud.bootstrap.config.PropertySourceBootstrapConfiguration#insertPropertySources

我們反向看一下:
- 通過(guò)remoteProperties對(duì)象的屬性判斷的
- remoteProperties的屬性是通過(guò)spring.cloud.config的鍵值對(duì)復(fù)制的
- 鍵值對(duì)是通過(guò)環(huán)境變量中incoming獲取的
- incoming是new出來(lái)的也就是說(shuō)沒(méi)有值
- incoming的值是通過(guò)reversedComposite的的值排序后添每次加頭部進(jìn)去的,也就是和reversedComposite原始的順序是一致的,propertySources中已有值,需要使用addFirst把遠(yuǎn)程配置加載到前列,就需要先倒序.
- 查看composite就知道了,最終的參數(shù)是從哪里獲取的。

從結(jié)果發(fā)現(xiàn),composite中的配置全部是來(lái)自與遠(yuǎn)程配置。
所以如果你需要本地配置優(yōu)先,需要把上面的配置放在遠(yuǎn)程配置中的配置文件中才可以生效
同時(shí)需要注意文件順序:
- {application.name}-{profiles}.后綴
- {application.name}.后綴
- {application.name}
- spring.cloud.nacos.config.shared-configs中的公共配置
快去試一下效果吧!!~~~~~~~~~~~~~~~~~~~~
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
微信公眾平臺(tái)開(kāi)發(fā)實(shí)戰(zhàn)Java版之微信獲取用戶基本信息
這篇文章主要介紹了微信公眾平臺(tái)開(kāi)發(fā)實(shí)戰(zhàn)Java版之微信獲取用戶基本信息 的相關(guān)資料,需要的朋友可以參考下2015-12-12
解決springboot中自定義JavaBean返回的json對(duì)象屬性名稱大寫(xiě)變小寫(xiě)問(wèn)題
開(kāi)發(fā)過(guò)程中發(fā)現(xiàn)查詢返回的數(shù)據(jù)出現(xiàn)自定義的JavaBean的屬性值大小寫(xiě)格式出現(xiàn)問(wèn)題,導(dǎo)致前端無(wú)法接受到數(shù)據(jù),目前有四種解決方法,根據(jù)大佬的經(jīng)驗(yàn)之談,前兩種是最簡(jiǎn)單便捷的,后兩種是比較通用的方法,需要的朋友可以參考下2023-10-10
Java編程實(shí)現(xiàn)用hash方法切割文件
這篇文章主要介紹了Java編程實(shí)現(xiàn)用hash方法切割文件,簡(jiǎn)單介紹了hash的概念,然后分享了使用方法示例,具有一定借鑒價(jià)值,需要的朋友可以了解下。2017-12-12
IDEA中程序包Org.Springframework.Boot不存在問(wèn)題及解決
這篇文章主要介紹了IDEA中程序包Org.Springframework.Boot不存在問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-07-07
java中的阻塞隊(duì)列應(yīng)用場(chǎng)景及代碼實(shí)例
這篇文章主要介紹了java中的阻塞隊(duì)列應(yīng)用場(chǎng)景及代碼實(shí)例阻塞隊(duì)列是一種特殊的隊(duì)列,它提供了線程安全的操作,并在隊(duì)列為空或滿時(shí)提供了阻塞的功能,阻塞隊(duì)列通常用于多線程場(chǎng)景,其中生產(chǎn)者線程向隊(duì)列中添加元素,而消費(fèi)者線程從隊(duì)列中獲取元素,需要的朋友可以參考下2024-01-01
SpringBoot使用Redis緩存的實(shí)現(xiàn)方法
這篇文章主要介紹了SpringBoot使用Redis緩存的實(shí)現(xiàn)方法,需要的朋友可以參考下2018-02-02

