Spring Cloud 配置文件使用規(guī)范詳解

Spring Cloud 配置文件使用規(guī)范詳解

在 Spring Cloud 項(xiàng)目中澳泵,配置文件的合理管理是應(yīng)用穩(wěn)定運(yùn)行和維護(hù)的基礎(chǔ)。本文將詳細(xì)講解配置文件的作用重慢、加載順序测僵、優(yōu)先級(jí)以及使用最佳實(shí)踐票唆,特別是在 Nacos 作為配置中心和注冊(cè)中心的情況下朴读。


一、配置文件的作用和加載順序

1.1 配置文件類(lèi)型及作用

  1. bootstrap.properties / bootstrap.yml

    • 作用
      • 應(yīng)用程序引導(dǎo)階段加載的配置走趋,主要用于連接 外部配置中心(如 Nacos Config)和 注冊(cè)中心(如 Nacos Discovery)衅金。
      • 存儲(chǔ)一些需要優(yōu)先加載的配置,例如加密解密密鑰或遠(yuǎn)程配置中心的地址簿煌。
    • 加載時(shí)機(jī):在 Spring Boot 應(yīng)用上下文初始化之前加載氮唯,屬性優(yōu)先級(jí)高于 application.properties
  2. application.properties / application.yml

    • 作用:應(yīng)用的主配置文件啦吧,定義通用的配置項(xiàng)您觉,如數(shù)據(jù)庫(kù)、緩存授滓、隊(duì)列等服務(wù)的連接信息琳水。
    • 加載時(shí)機(jī):在 bootstrap.properties 之后加載,由應(yīng)用程序上下文管理般堆。
  3. 環(huán)境特定配置文件

    • 作用:根據(jù)運(yùn)行環(huán)境(如開(kāi)發(fā)在孝、測(cè)試、生產(chǎn))加載特定配置淮摔。
    • 命名規(guī)范application-{profile}.propertiesapplication-{profile}.yml私沮。
    • 激活方式
      • spring.profiles.active(推薦)
      • spring.config.activate.on-profile(Spring Boot 2.4.0 及以上版本)

二、bootstrap.properties 的使用規(guī)范

2.1 作用與內(nèi)容

  • 作用
    • 配置外部配置中心(如 Nacos Config)的連接信息和橙。
    • 定義全局性配置仔燕,優(yōu)先級(jí)高于應(yīng)用上下文中的配置。

三魔招、Nacos 配置中心與本地配置的關(guān)系

3.1 默認(rèn)行為

遠(yuǎn)程配置優(yōu)先級(jí)高于本地配置:默認(rèn)情況下晰搀,Nacos 配置中心的配置會(huì)覆蓋 application.propertiesapplication.yml 中的同名屬性。這是因?yàn)?Nacos 配置默認(rèn)加載在 Spring 的 Environment 中較高的優(yōu)先級(jí)位置办斑。

3.2 本地配置覆蓋遠(yuǎn)程配置

如果希望本地配置優(yōu)先于遠(yuǎn)程配置外恕,可以在 bootstrap.propertiesbootstrap.yml 中設(shè)置以下屬性:

# 如果設(shè)置為 false,本地配置優(yōu)先級(jí)高于遠(yuǎn)程配置,
spring.cloud.nacos.config.override-local-properties=false
# 如果您希望遠(yuǎn)程配置優(yōu)先級(jí)高于本地配置乡翅,請(qǐng)?jiān)O(shè)置為 true
spring.cloud.nacos.config.override-local-properties=true

注:由于 Nacos 配置中心不支持像 Spring Cloud Config 那樣的系統(tǒng)屬性覆蓋控制鳞疲,所以沒(méi)有與 spring.cloud.config.override-system-properties 等效的配置項(xiàng),以下是Spring Cloud Config的相關(guān)配置

# 如果本地配置優(yōu)先級(jí)高蠕蚜,那么 override-none 設(shè)置為 true尚洽,包括系統(tǒng)環(huán)境變量、本地配置文件等配置
spring.cloud.config.override-none=true
# 如果想要遠(yuǎn)程配置優(yōu)先級(jí)高靶累,那么 allow-override 設(shè)置為 false翎朱,如果想要本地配置優(yōu)先級(jí)高那么 allow-override 設(shè)置為 true
spring.cloud.config.allow-override=true
# 只有系統(tǒng)環(huán)境變量或者系統(tǒng)屬性才能覆蓋遠(yuǎn)程配置文件的配置橄维,本地配置文件中配置優(yōu)先級(jí)低于遠(yuǎn)程配置;注意本地配置文件不是系統(tǒng)屬性
spring.cloud.config.override-system-properties=fals

四拴曲、環(huán)境特定配置文件的使用規(guī)范

4.1 激活方式

  1. 命令行激活

    java -jar my-app.jar --spring.profiles.active=prod
    
  2. 配置文件激活(推薦用于 Spring Boot 2.4+):
    application.properties 文件中使用 spring.config.activate.on-profile 動(dòng)態(tài)激活:

    spring.config.activate.on-profile=local
    

五争舞、最佳實(shí)踐

5.1 合理組織配置文件

  • 通用配置:放在 application.properties 或 Nacos 的共享配置中。
  • 環(huán)境特定配置:使用 application-{profile}.properties 或 Nacos 命名空間澈灼。

5.2 使用動(dòng)態(tài)激活功能

通過(guò) spring.profiles.active 或者 spring.config.activate.on-profile 簡(jiǎn)化環(huán)境配置文件的管理竞川,避免頻繁修改主配置文件。

5.3 敏感信息管理

  • 避免明文存儲(chǔ):使用 Nacos 加密存儲(chǔ)敏感信息叁熔,或通過(guò)環(huán)境變量注入委乌。
  • 優(yōu)先級(jí)高的配置:將敏感信息放在高優(yōu)先級(jí)的配置源中,避免意外覆蓋荣回。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末遭贸,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子心软,更是在濱河造成了極大的恐慌壕吹,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,695評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件删铃,死亡現(xiàn)場(chǎng)離奇詭異耳贬,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)猎唁,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,569評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén)咒劲,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人诫隅,你說(shuō)我怎么就攤上這事腐魂。” “怎么了逐纬?”我有些...
    開(kāi)封第一講書(shū)人閱讀 168,130評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵挤渔,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我风题,道長(zhǎng),這世上最難降的妖魔是什么嫉父? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,648評(píng)論 1 297
  • 正文 為了忘掉前任沛硅,我火速辦了婚禮,結(jié)果婚禮上绕辖,老公的妹妹穿的比我還像新娘摇肌。我一直安慰自己,他們只是感情好仪际,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,655評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布围小。 她就那樣靜靜地躺著昵骤,像睡著了一般。 火紅的嫁衣襯著肌膚如雪肯适。 梳的紋絲不亂的頭發(fā)上变秦,一...
    開(kāi)封第一講書(shū)人閱讀 52,268評(píng)論 1 309
  • 那天,我揣著相機(jī)與錄音框舔,去河邊找鬼蹦玫。 笑死,一個(gè)胖子當(dāng)著我的面吹牛刘绣,可吹牛的內(nèi)容都是我干的樱溉。 我是一名探鬼主播,決...
    沈念sama閱讀 40,835評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼纬凤,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼福贞!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起停士,我...
    開(kāi)封第一講書(shū)人閱讀 39,740評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤挖帘,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后向瓷,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體肠套,經(jīng)...
    沈念sama閱讀 46,286評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,375評(píng)論 3 340
  • 正文 我和宋清朗相戀三年猖任,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了你稚。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,505評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡朱躺,死狀恐怖刁赖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情长搀,我是刑警寧澤宇弛,帶...
    沈念sama閱讀 36,185評(píng)論 5 350
  • 正文 年R本政府宣布,位于F島的核電站源请,受9級(jí)特大地震影響枪芒,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜谁尸,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,873評(píng)論 3 333
  • 文/蒙蒙 一舅踪、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧良蛮,春花似錦抽碌、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,357評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)左权。三九已至,卻和暖如春痴颊,著一層夾襖步出監(jiān)牢的瞬間赏迟,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,466評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工祷舀, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留瀑梗,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,921評(píng)論 3 376
  • 正文 我出身青樓裳扯,卻偏偏與公主長(zhǎng)得像抛丽,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子饰豺,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,515評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容