[特殊字符] Spring Cloud 微服務配置統一管理:基于 Nacos 的最佳實踐詳解

在微服務架構中,配置文件眾多、管理復雜是常見問題。本文將手把手演示如何將配置集中托管到 Nacos,并在 Spring Cloud Alibaba 項目中實現統一配置管理 + 自動刷新機制


一、為什么要使用 Nacos 統一配置?

傳統方式下,每個服務都維護自己的 application.yml,當我們想要修改某個通用配置(如 Redis、JWT 密鑰等)時需要逐個服務更改。缺點明顯:

  • 配置分散,難以維護;

  • 無法熱更新,需重啟服務;

  • 配置不一致易引發 BUG。

? 解決方案:使用 Nacos 配置中心,集中管理配置并實現熱更新。


二、引入依賴(Nacos 配置中心)

在 Spring Boot 項目的 pom.xml 中加入以下依賴:

<!-- Nacos Config 配置中心 -->
<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency><!-- Spring Cloud Bootstrap 支持(可選) -->
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>

三、準備配置文件:bootstrap.yml

在每個微服務中新增(或使用)bootstrap.yml,配置如下:

spring:application:name: trade-service  # 服務名,對應Nacos中的Data IDcloud:nacos:config:server-addr: localhost:8848   # Nacos地址file-extension: yaml          # 默認配置文件擴展名namespace: public             # 命名空間ID(推薦使用dev/test/prod分離)

📌 注意: spring.application.name 會決定從 Nacos 加載的配置名,格式為:{name}.{file-extension},例如 trade-service.yaml


四、在 Nacos 創建配置文件

登錄 Nacos 控制臺:

  • 配置管理 -> 配置列表 -> 新增配置

  • Data ID:trade-service.yaml

  • 配置格式:YAML

  • 內容示例:

hm:cart:maxSize: 100timeout: 60

五、讀取配置:@ConfigurationProperties 模式

推薦使用結構化配置類方式讀取 Nacos 配置:

@ConfigurationProperties(prefix = "hm.cart")
@Data
public class CartProperties {private Integer maxSize;private Long timeout;
}

并在你的服務中啟用該配置:

@EnableConfigurationProperties(CartProperties.class)
@Service
public class CartServiceImpl implements ICartService {private final CartProperties cartProperties;public CartServiceImpl(CartProperties cartProperties) {this.cartProperties = cartProperties;}
}

六、配置熱更新支持

Spring Cloud Alibaba 中,@ConfigurationProperties + @EnableConfigurationProperties 方式默認支持配置刷新,無需顯式加 @RefreshScope,這也是你發現“沒有加 @RefreshScope 也能刷新”的原因。

如果你使用的是 @Value 注解讀取配置:

@RefreshScope
@Component
public class PayProperties {@Value("${pay.secret}")private String secret;
}

此時必須使用 @RefreshScope 才能在 /actuator/refresh 被觸發后動態更新。


七、啟用 actuator 手動刷新接口(可選)

如果需要支持通過接口刷新配置,可以添加以下配置:

pom.xml 添加依賴:

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

application.yml 中開啟端點:

management:endpoints:web:exposure:include: refresh,health,info

使用 Postman 調用:

POST http://localhost:端口/actuator/refresh

即可手動觸發配置刷新。


八、總結

特性@ConfigurationProperties + @EnableConfigurationProperties@Value + @RefreshScope
推薦程度? 推薦,結構化配置、強類型綁定?? 不推薦用于復雜配置
是否需手動刷新否,自動生效是,需調用 /actuator/refresh
是否可嵌套對象? 支持? 不支持

🚀 小結

本文完整演示了如何使用 Nacos 實現微服務配置統一管理和熱更新,包括依賴引入、配置文件編寫、Nacos 控制臺創建、配置類綁定和動態刷新原理。掌握這套方法,將大大提升你在微服務項目中的配置管理能力。

如果覺得有幫助,別忘了點贊 + 收藏哦!

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

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

相關文章

2025平航杯—團隊賽

2025平航杯團隊賽 計算機取證 分析起早王的計算機檢材&#xff0c;起早王的計算機插入過USB序列號是什么(格式&#xff1a;1)分析起早王的計算機檢材&#xff0c;起早王的便簽里有幾條待干(格式&#xff1a;1)分析起早王的計算機檢材&#xff0c;起早王的計算機默認瀏覽器是什…

JSON-RPC 2.0 規范中文版——無狀態輕量級遠程過程調用協議

前言 JSON-RPC是一種簡單、輕量且無狀態的遠程過程調用&#xff08;RPC&#xff09;協議&#xff0c;它允許不同系統通過標準化的數據格式進行通信。自2010年由JSON-RPC工作組發布以來&#xff0c;已成為眾多應用中實現遠程交互的基礎協議之一。本規范主要表達了JSON-RPC 2.0版…

微控制器編程 | ISP、IAP 與 ICP 的原理與比較

注&#xff1a;英文引文&#xff0c;機翻未校。 圖片清晰度限于引文原狀。 Introduction to Programming of Microcontroller: ISP, IAP and ICP 微控制器編程介紹&#xff1a;ISP、IAP 和 ICP Date: 30-11-2022 1. What is Microcontroller Programming 什么是微控制器編…

Allegro23.1新功能之新型via structure創建方法操作指導

Allegro23.1新功能之新型via structure創建方法操作指導 Allegro升級到了23.1后,支持創建新型via structure 通過直接定義參數來生成 具體操作如下 打開軟件,選擇 Allegro PCB Designer

IBM WebSphere Application Server 7.0/8.5.5證書過期問題處理

證書過期錯誤日志&#xff1a; [3/14/16 7:22:20:332 PDT] 0000007d WSX509TrustMa E CWPKI0312E: The certificate with subject DN CNMXSYSTEMS, OUctgNodeCell01, OUctgNode01, OIBM, CUS has an end date Mon Jan 11 11:17:18 PST 2016 which is no longer valid. [3/14/…

select,poll,epoll區別聯系

selsect,poll,epoll區別聯系 目錄 一、區別 二、聯系 select、poll 和 epoll 都是在 Linux 系統中用于實現 I/O 多路復用的機制&#xff0c;它們的主要目的是讓程序能夠同時監控多個文件描述符&#xff0c;以判斷是否有事件發生&#xff0c;從而提高 I/O 操作的效率。 一、區…

curl和wget的使用介紹

目錄 一、curl 和 wget 區別 二、wget的使用 2.1 參數說明 2.2 wget 使用示例 三、curl的使用 3.1 參數說明 3.2 curl使用示例 一、curl 和 wget 區別 wget 和 curl 都可以下載內容。它們都可以向互聯網發送請求并返回請求項&#xff0c;可以是文件、圖片或者是其他諸如…

日語學習-日語知識點小記-構建基礎-JLPT-N4階段(12): ておき ます

日語學習-日語知識點小記-構建基礎-JLPT-N4階段&#xff08;12&#xff09;&#xff1a; ておき ます。 1、前言&#xff08;1&#xff09;情況說明&#xff08;2&#xff09;工程師的信仰 2、知識點&#xff08;1&#xff09;&#xff5e;ておき ます。&#xff08;2&#x…

高質量水火焰無損音效包

今天設計寶藏給大家分享的是Cinematic Elements: Fire & Water音頻資源庫包含大量高質量的火焰和水的聲音效果。它具有非常強烈的個性特征和次世代的音效。火焰和水是兩個令人印象深刻而 interessing 的元素。它們的表現形式從微小無害到巨大毀滅性都有。因此,它們的聲音特…

畢業論文 | 傳統特征點提取算法與匹配算法對比分析

傳統特征點提取算法與匹配算法對比分析 一、特征點提取算法對比二、特征匹配算法對比三、核心算法原理與公式1. **Harris角點檢測**2. **SIFT描述子生成**3. **ORB描述子**四、完整Matlab代碼示例1. **Harris角點檢測與匹配**2. **SIFT特征匹配(需VLFeat庫)**3. **ORB特征匹配…

【網絡原理】從零開始深入理解HTTP的報文格式(二)

本篇博客給大家帶來的是網絡HTTP協議的知識點, 續上篇文章,接著介紹HTTP的報文格式. &#x1f40e;文章專欄: JavaEE初階 &#x1f680;若有問題 評論區見 ? 歡迎大家點贊 評論 收藏 分享 如果你不知道分享給誰,那就分享給薯條. 你們的支持是我不斷創作的動力 . 王子,公主請閱…

Microsoft .NET Framework 3.5 離線安裝包 下載

Microsoft. NET Framework 3.5 是支持生成和運行下一代應用程序和XML Web Services 的內部Windows 組件&#xff0c; 對 .NET Framework 2.0 和 3.0 中的許多新功能進行了更新和增補&#xff0c; 且附帶了 .NET Framework 2.0 Service Pack 1 和 .NET Framework 3.0 Service…

Flask + ajax上傳文件(三)--圖片上傳與OCR識別

本教程將詳細介紹如何使用Flask框架構建一個圖片上傳與文字識別(OCR)的Web應用。我們將使用EasyOCR作為OCR引擎,實現一個支持中文和英文識別的完整應用。 環境準備 首先,確保你已經安裝了Python 3.7+環境,然后安裝必要的依賴庫: pip install flask easyocr pillow werkz…

模型部署技巧(一)

模型部署技巧&#xff08;一&#xff09; 以下內容是參考CUDA與TensorRT模型部署內容第六章&#xff0c;主要針對圖像的前/后處理中的trick。 參考&#xff1a; 1.部署分類器-int8-calibration 2. cudnn安裝地址 3. 如何查找Tensor版本&#xff0c;與cuda 和 cudnn匹配 4. ti…

MySQL--數據引擎詳解

存儲引擎 MySQL體系結構 連接層&#xff1a; 主要接收客戶端的連接&#xff0c;然后完成一些鏈接的處理&#xff0c;以及認證授權的相關操作和安全方案&#xff0c;還要去檢查是否超過最大連接數等等&#xff0c;比如在連接MySQL服務器時需要輸入用戶名&#xff0c;密碼&#…

【含文檔+PPT+源碼】基于微信小程序的健康飲食食譜推薦平臺的設計與實現

項目介紹 本課程演示的是一款基于微信小程序的健康飲食食譜推薦平臺的設計與實現&#xff0c;主要針對計算機相關專業的正在做畢設的學生與需要項目實戰練習的 Java 學習者。 1.包含&#xff1a;項目源碼、項目文檔、數據庫腳本、軟件工具等所有資料 2.帶你從零開始部署運行本…

當OA闖入元宇宙:打卡、報銷和會議的未來狂想

引言&#xff1a;虛實共生中的組織基因突變 元宇宙正以虛實共生的形態重構人類協作的底層邏輯。傳統OA系統建立的物理規則——指紋打卡驗證在場性、紙質票據堆砌信任鏈、會議室排期協調時空資源——在元宇宙的數字原野上迎來基因級重組。這場變革不僅是技術工具的迭代&#xf…

解決vscode cmake提示檢測到 #include 錯誤

一、問題 cmake已經包含了動態庫文件&#xff0c;依然提示“檢測到 #include 錯誤。請更新 includePath。” 二、解決方案 Ctrl Shift P進入CPP編輯配置&#xff0c;然后在JSON中加入下面一行&#xff1a; "configurationProvider": "ms-vscode.cmake-tools&…

2024ICPC成都題解

文章目錄 L. Recover Statistics(簽到)J. Grand Prix of Ballance(模擬簽到)A. Arrow a Row(構造)B. Athlete Welcome Ceremony(線性dp)G. Expanding Array(打表結論)I. Good Partitions(線段樹)E. Disrupting Communications(換根dpLCA倍增)K. Magical Set(費用流) 題目鏈接 …

達夢數據庫官方遷移工具SQLark:支持Oracle/MySQL/PostgreSQL遷移至達夢數據庫!

SQLark 百靈連接是一款面向信創應用開發者的數據庫開發和管理工具&#xff0c;由達夢數據歷時三年自主研發&#xff0c;注冊即可免費使用客戶端&#xff08;官網鏈接www.sqlark.com&#xff09;。今天&#xff0c;我們將重點介紹SQLark的特色功能之一——數據遷移&#xff0c;該…