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

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

從結(jié)果發(fā)現(xiàn),composite中的配置全部是來自與遠(yuǎn)程配置。
所以如果你需要本地配置優(yōu)先,需要把上面的配置放在遠(yuǎn)程配置中的配置文件中才可以生效
同時需要注意文件順序:
- {application.name}-{profiles}.后綴
- {application.name}.后綴
- {application.name}
- spring.cloud.nacos.config.shared-configs中的公共配置
快去試一下效果吧??!~~~~~~~~~~~~~~~~~~~~
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
微信公眾平臺開發(fā)實戰(zhàn)Java版之微信獲取用戶基本信息
這篇文章主要介紹了微信公眾平臺開發(fā)實戰(zhàn)Java版之微信獲取用戶基本信息 的相關(guān)資料,需要的朋友可以參考下2015-12-12
解決springboot中自定義JavaBean返回的json對象屬性名稱大寫變小寫問題
開發(fā)過程中發(fā)現(xiàn)查詢返回的數(shù)據(jù)出現(xiàn)自定義的JavaBean的屬性值大小寫格式出現(xiàn)問題,導(dǎo)致前端無法接受到數(shù)據(jù),目前有四種解決方法,根據(jù)大佬的經(jīng)驗之談,前兩種是最簡單便捷的,后兩種是比較通用的方法,需要的朋友可以參考下2023-10-10
IDEA中程序包Org.Springframework.Boot不存在問題及解決
這篇文章主要介紹了IDEA中程序包Org.Springframework.Boot不存在問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-07-07
SpringBoot使用Redis緩存的實現(xiàn)方法
這篇文章主要介紹了SpringBoot使用Redis緩存的實現(xiàn)方法,需要的朋友可以參考下2018-02-02

