Spring Boot配置文件加載全指南:從基礎到Spring Cloud集成

???

??一、核心概念?

配置文件默認存在加載順序優先級主要用途必需依賴
bootstrap.yml? 無1(最先)最高Spring Cloud上下文初始化spring-cloud-starter-bootstrap
bootstrap.properties? 無1(略高于.yml)最高同上同上
application.yml? 自動創建2中等應用核心配置
application.properties? 自動創建2(高于.yml)中等同上

??Spring Boot 2.4+ 必須顯式添加spring-cloud-starter-bootstrap依賴才會加載bootstrap.*文件!


??二、詳細加載機制解析??

??1. 標準Spring Boot項目(無Spring Cloud)??

  • ??僅生效文件??:application.yml/application.properties
  • ??加載順序??:
    1. application.properties(若存在)
    2. application.yml(覆蓋同名屬性)

??2. Spring Cloud項目??

  • ??完整加載順序??:
    1. bootstrap.ymlbootstrap.properties(需依賴)
    2. application.ymlapplication.properties
  • ??典型用途??:
    • bootstrap.*:配置Config Server地址、加密密鑰等
    • application.*:數據庫連接、服務端口等常規配置

??三、版本兼容性矩陣??

Spring Boot版本Bootstrap機制推薦做法
??2.3及以下??自動加載無需額外依賴
??2.4~2.7??需顯式添加依賴必須引入spring-cloud-starter-bootstrap
??3.0+??已移除改用spring.config.import

???? 重要??:
Spring Boot 3.x 用戶應參考官方指南,不再使用bootstrap.*文件。


??四、依賴管理實戰??

??Maven項目配置示例??

<!-- Spring Boot 2.6 + Spring Cloud 2021.0.3 -->
<properties><spring-cloud.version>2021.0.3</spring-cloud.version>
</properties><dependencies><!-- 關鍵依賴! --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-bootstrap</artifactId></dependency><!-- 其他Cloud組件 --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-config</artifactId></dependency>
</dependencies><dependencyManagement><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>${spring-cloud.version}</version><type>pom</type><scope>import</scope></dependency></dependencies>
</dependencyManagement>

??Gradle項目配置示例??

ext {set('springCloudVersion', "2021.0.3")
}dependencies {implementation 'org.springframework.cloud:spring-cloud-starter-bootstrap'implementation 'org.springframework.cloud:spring-cloud-starter-config'
}dependencyManagement {imports {mavenBom "org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}"}
}

??五、配置優先級驗證方法??

??1. 通過Actuator端點檢查??

  1. 添加依賴:
    <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
  2. 訪問:http://localhost:8080/actuator/env
  3. 查找propertySources列表,確認加載順序

??2. 日志驗證??

啟動時添加--debug參數:

java -jar your-app.jar --debug

在日志中搜索:

Loaded config file 'classpath:/bootstrap.yml'
Loaded config file 'classpath:/application.yml'

??六、多環境配置最佳實踐??

??1. 標準多環境配置??

resources/
├── application.yml          # 主配置
├── application-dev.yml      # 開發環境
├── application-prod.yml     # 生產環境
└── bootstrap.yml            # Cloud配置(可選)

激活指定環境:

java -jar app.jar --spring.profiles.active=prod

??2. 配置覆蓋規則示例??

# bootstrap.yml
spring:cloud:config:uri: http://config-server:8888  # 最高優先級# application-dev.yml
server:port: 8081  # 會被bootstrap中的配置覆蓋(如果存在同名屬性)

??七、常見問題解決方案??

??Q1: Spring Boot 2.6+ bootstrap.yml不生效???

  • ??檢查項??:
    1. 是否添加了spring-cloud-starter-bootstrap依賴
    2. 依賴版本是否與Spring Cloud版本匹配
    3. 是否誤用了Spring Boot 3.x

??Q2: 如何調試配置加載過程???

  1. 啟用調試日志:
    # application.properties
    logging.level.org.springframework.boot.context.config=DEBUG
  2. 檢查日志中的PropertySource加載順序

??Q3: 需要覆蓋bootstrap.*中的配置怎么辦???

  • application.*中使用??相同屬性名??即可覆蓋
  • 或通過環境變量/命令行參數覆蓋(最高優先級)

??八、總結流程圖??

graph TDA[啟動應用] --> B{是否存在spring-cloud-starter-bootstrap?}B -->|是| C[加載bootstrap.yml]B -->|否| D[跳過bootstrap]C --> E[加載application.yml]D --> EE --> F[應用最終配置]

??最終建議??:

  1. 新項目優先使用Spring Boot 3.x + spring.config.import
  2. 維護項目按版本嚴格遵循本指南
  3. 多環境配置務必使用application-{profile}.yml模式

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/92728.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/92728.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/92728.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Python通關秘籍(六)數據結構——字典

前文復習 五、數據結構 5.1 列表(List) 列表是一種有序的可變數據集合,可以包含不同類型的元素。

自學嵌入式 day33 TCP、HTTP協議(超文本傳輸協議)

6、黏包問題&#xff08;1&#xff09;、原因&#xff1a;發送方發送數據太快或者接收方接收數據太慢&#xff0c;導致數據在緩沖區緩存。&#xff08;2&#xff09;、解決方法&#xff1a;①發送指定大小數據&#xff08;結構體&#xff09;問題&#xff1a;結構體對齊問題&am…

LinuxShell 的 Here-Document(<< EOF) 筆記250723

LinuxShell 的 Here-Document(<< EOF) 筆記250723 Here-Document(<< EOF) Linux Shell Here Document (<< EOF) 終極指南 Here Document&#xff08;立即文檔&#xff09;是 Shell 中用于多行輸入重定向的強大功能&#xff0c;其核心語法為 << DELI…

【windows修復】解決windows10,沒有【相機] 功能問題

問題: windows10,相機模塊,好像是被卸載了,想重新安裝 方法簡介: 先下載windows store, 然后,在windows store 里面下載 相機功能: 解決: 直接下載官方離線包并手動安裝(成功率 90%+) 1 用瀏覽器打開 https://store.rg-adguard.net 這是微軟 CDN 解析站,安…

Python 中字典和 if-else 的選擇

一、為什么要寫這篇文章&#xff1f; 在 Python 編程中&#xff0c;我們經常需要根據不同的條件做不同的事情。比如&#xff1a; 根據用戶等級顯示不同的內容根據成績給出不同的評價根據天氣決定穿什么衣服 這時候&#xff0c;我們通常有兩種選擇&#xff1a; 用 if-else 語句用…

【開源解析】基于HTML5的智能會議室預約系統開發全攻略:從零構建企業級管理平臺

&#x1f680; 【開源解析】基于HTML5的智能會議室預約系統開發全攻略&#xff1a;從零構建企業級管理平臺 &#x1f308; 個人主頁&#xff1a;創客白澤 - CSDN博客 &#x1f4a1; 熱愛不止于代碼&#xff0c;熱情源自每一個靈感閃現的夜晚。愿以開源之火&#xff0c;點亮前行…

中央廣播電視總臺聯合阿里云研究院權威發布《中國人工智能應用發展報告(2025)》:我國依舊需要大力注重人工智能人才的培養

你好&#xff0c;我是杰哥。 中央廣播電視總臺聯合阿里云研究院權威發布《中國人工智能應用發展報告&#xff08;2025&#xff09;》&#xff0c;以下為報告核心看點&#xff1a; 報告首提 “654”體系&#xff1a;揭秘 6大技術趨勢、5 新應用場景、4 力產業模型&#xff1b;成…

Visual Studio 2010-.Net Framework 4.0-DevExpress安裝

最新版的DevExpress已不支持.Net Framework 4.0&#xff0c;需要下載18.1及以下版本。 17.2.5版DevExpress下載&#xff1a; 百度網盤 請輸入提取碼

借助Aspose.HTML控件,在 Python 中將 HTML 轉換為 Markdown

在這個人工智能時代&#xff0c;Markdown因其易用性而備受重視。這種標記語言易于人類和機器理解。此外&#xff0c;與 HTML 和 DOCX 相比&#xff0c;這種格式更有助于法學碩士 (LLM) 理解文檔結構。因此&#xff0c;本指南將介紹如何以 Python 編程方式將HTML轉換為 Markdown…

【2026版】Redis面試題

文章目錄1. Redis為什么這么快&#xff1f;2. Redis的持久化機制是怎樣的&#xff1f;3. Redis 的過期策略是怎么樣的&#xff1f;4. Redis的內存淘汰策略是怎么樣的&#xff1f;5. 什么是熱Key問題&#xff0c;如何解決熱key問題&#xff1f;6. 什么是大Key問題&#xff0c;如…

Python編程進階知識之第四課處理數據(pandas)

目錄 簡介 1. 安裝 Pandas 2.基本數據結構 1.Series &#xff08;1.&#xff09;創建Series &#xff08;2.&#xff09;Series的屬性 &#xff08;3.&#xff09;Series 的索引和切片 2.DataFrame &#xff08;1.&#xff09;創建 DataFrame &#xff08;2.&#xff09;…

使用 Vue 實現移動端視頻錄制與自動截圖功能

文章目錄技術棧功能介紹video標簽屬性完整代碼js 前端實現將視頻Blob轉Base64java 后端實現將視頻Base64轉mp4文件在移動端網頁開發中&#xff0c;使用攝像頭錄制視頻并自動生成截圖是一個常見的需求&#xff0c;比如身份認證、人臉識別或互動問卷等場景。本文將介紹如何使用 V…

單片機是怎么控制步進電機的?

步進電機作為一種將電脈沖信號轉化為角位移的執行機構&#xff0c;其運轉依賴于脈沖信號的控制&#xff0c;而單片機作為控制核心&#xff0c;通過輸出特定的脈沖信號和方向信號&#xff0c;實現對步進電機的步數、方向、轉速的精準控制&#xff0c;整個過程需結合驅動電路、程…

數據庫binlog日志查看方案

binlog可以查看當前數據庫中所有的修改操作&#xff0c;包含數據和結構的修改&#xff0c;所以掌握數據庫日志查看是有必要的 通過客戶端連接到mysql 查看binlog日志的存儲位置&#xff08;前提是已開啟binlog&#xff09; -- 查看日志文件列表 SHOW BINARY LOGS;結果示例-- 這…

MinIO Go 客戶端使用詳解:對象存儲開發實戰指南

MinIO GO-SDK ? 一、準備工作 1. 環境依賴 2. 安裝 SDK ?? 二、初始化 MinIO 客戶端 ?? 三、創建 Bucket(存儲桶) ?? 四、上傳對象 ?? 五、下載對象 ?? 六、列出對象列表 ??? 七、刪除對象 ?? 八、總結 ?? 推薦閱讀: 隨著云原生架構的發展,對象存儲已成為…

linux-process

Linux進程概念 1. 進程概念 1.1 理解馮諾依曼體系解構 馮諾依曼體系解構五大核心&#xff1a; 運算器&#xff1a;負責算數運算&#xff08;加減乘除&#xff09;和邏輯運算&#xff08;與或非&#xff09;。 控制器&#xff1a;從內存中讀取指令&#xff0c;并協調其他部件…

《西蒙學習法》核心思想的感悟與思考

以下是對《西蒙學習法》核心思想的感悟與思考&#xff0c;結合書中要點提煉為可實踐的學習哲學&#xff1a;一、破除學習迷思&#xff1a;從“記憶量”到“認知升級”學習≠記憶 大腦不是硬盤&#xff0c;知識存儲無限但時間有限。真正的學習是建立“解決問題的程序”&#xff…

互聯網隱私的未來:Web3、區塊鏈與神秘法寶

隨著互聯網技術的飛速發展&#xff0c;用戶隱私保護成為了一個全球性的話題。Web3和區塊鏈技術的出現&#xff0c;為互聯網隱私的未來提供了新的可能性。本文將探討這些技術如何塑造隱私保護的新格局&#xff0c;并介紹一些神秘的法寶&#xff0c;它們在保護用戶隱私方面發揮著…

Go進階高并發(多線程)處理教程

Go進階高并發處理教程 目錄 Go并發編程基礎Goroutine深入理解同步原語詳解并發模式與最佳實踐性能優化技巧實戰案例 Go并發編程基礎 什么是并發&#xff1f; 并發是指程序能夠同時處理多個任務的能力。Go語言從設計之初就將并發作為核心特性&#xff0c;提供了簡潔而強大的…

一種基于單片機控制的太陽能電池板系統設計

摘 要: 設計的太陽能電池板系統&#xff0c;以單片機單元為核心&#xff0c;集檢測、光能跟蹤、板面清潔、輸出控制為一體&#xff0c;解決了傳統太陽能板控制功能簡單、效率低的技術問題&#xff0c;達到了自動監測輸出電能、自動清洗板面、全方位跟蹤光伏發電最大效率點的技術…