分布式微服務--Nacos作為配置中心(補)關于bosststrap.yml與@RefreshScope

一、關于bosststrap.yml

? bootstrap.ymlapplication.yml 的區別

對比項bootstrap.ymlapplication.yml
加載時機優先于 application.yml 加載(啟動早期)程序初始化完成后加載
主要用途設置應用的外部配置源注冊中心信息設置應用內部配置,如端口、日志級別、bean 配置等
使用場景需要在程序啟動早期就完成配置加載的情況常規配置


? Nacos 配置中心為什么推薦用 bootstrap.yml

Spring Cloud Alibaba 的配置加載機制,是基于 Spring Cloud Config 客戶端架構實現的,讀取遠程配置的行為是發生在應用上下文啟動之前

🚨 也就是說:如果你把 Nacos 的配置寫到 application.yml,此時還沒加載配置中心,自然就讀取不到遠程配置。

所以要寫到 bootstrap.yml


? 實際建議(記住這個就行):

凡是涉及到外部配置源(如 Nacos 配置中心、Spring Cloud Config Server、Apollo 等)的信息,必須寫在 bootstrap.yml 中。

比如這些字段:

spring:application:name: nacos-config-democloud:nacos:config:server-addr: 127.0.0.1:8848file-extension: yaml

? Spring Boot 3.x 的變化(附加知識)

從 Spring Boot 2.4 開始,引入了一個新的配置機制叫做 config 子系統,官方推薦使用 application.yml + configimport 替代 bootstrap.yml

比如你可以寫成:

spring:config:import: nacos:nacos-config-demo.yaml

但目前大多數 Spring Cloud Alibaba 項目依舊推薦 bootstrap.yml,特別是 Spring Boot 2.x 的項目。

一、@RefreshScope注解

?為什么需要 @RefreshScope

在使用 Nacos 作為配置中心時,我們常常希望在不重啟服務的情況下,動態刷新配置項的值。Spring Cloud 提供了 @RefreshScope 注解來實現這個需求。

默認情況下,Spring 容器中注入的配置值(如通過 @Value@ConfigurationProperties)在應用啟動后就被固定了,即使 Nacos 中的配置發生了變更,也不會自動刷新,除非重啟服務。

因此:

? @RefreshScope 的作用就是:
讓被注解的類或 Bean 在配置變更時,能夠自動重新加載最新的配置,實現配置的熱更新。


?加在哪里?

1. 用在配置類上(推薦)
@RefreshScope
@Configuration
@ConfigurationProperties(prefix = "user")
public class UserConfig {private String name;private Integer age;// 省略 getter/setter
}

此時,如果 Nacos 中 user.nameuser.age 的配置發生變更,該類會自動重新加載配置。

2. 用在使用 @Value 的類上
@RestController
@RefreshScope  // 必須加在類上
public class UserController {@Value("${user.name}")private String name;@GetMapping("/user/name")public String getName() {return name;}
}

注意:如果你用的是 @Value必須加在類上才會生效。加在字段上無效!


? 配合使用的前提

要使 @RefreshScope 生效,還需確保:

  1. Nacos 配置變更時已開啟 自動刷新refresh: true)。

  2. 引入了必要依賴(Spring Cloud Alibaba Nacos Config)。

  3. 項目中引入了 Spring Boot Actuator,并暴露了 /actuator/refresh 接口(對于手動刷新場景)。

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

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

相關文章

[Qt]QString 與Sqlite3 字符串互動[漢字不亂碼]

環境:Qt C(msvc c)1.將與數據庫交互的代碼文件編碼轉換為utf-8-bom編碼,(可使用notepad 進行轉換)2.在代碼文件頭文件中加上下面代碼。//vs2010 版本是 1600 #if defined(_MSC_VER) && (_MSC_VER &…

SpringBoot啟動項目詳解

SpringBoot 的啟動過程是一個整合 Spring 核心容器、自動配置、嵌入式服務器等功能的復雜流程,核心目標是 “簡化配置、快速啟動”。下面從入口類開始,逐步拆解其詳細啟動步驟:一、啟動入口:SpringBootApplication與main方法Sprin…

PCB 控深槽如何破解 5G 基站 120℃高熱魔咒?

5G 基站在高頻通信下的功耗較 4G 基站提升 3-4 倍,射頻模塊、電源單元等核心部件的工作溫度常突破 120℃,遠超設備安全閾值(≤85℃),形成制約通信穩定性的 “高熱魔咒”。印制線路板(PCB)作為熱…

NEXT.js 打包部署到服務器

在網上查了一下,記錄一下1.首先執行打包命令,我這個項目是用的pnpm,可以根據項目需求使用 npm 或者別的pnpm run build2.打包完成后會有一個 .next 的文件夾,需要把下圖的這些文件放到服務器。服務器需要有node環境之后就需要執行…

【AI分析】uv庫自動安裝腳本uv-installer-0.8.3.ps1分析

目錄uv 安裝腳本完整分析報告1. 腳本概述2. 參數解析3. 環境變量控制4. 核心函數詳解a. Install-Binary(主控函數)b. Get-TargetTriple(架構檢測)c. Download(下載處理)d. Invoke-Installer(安裝…

etcd 的安裝與使用

介紹 Etcd 是一個 golang 編寫的分布式、高可用的一致性鍵值存儲系統,用于配置共享和服 務發現等。它使用 Raft 一致性算法來保持集群數據的一致性,且客戶端通過長連接 watch 功能,能夠及時收到數據變化通知,相較于 Zookeeper 框…

conda : 無法將“conda”項識別為 cmdlet、函數、腳本文件或可運行程序的名稱。請檢查名稱的拼寫,如果包括路徑,請確保路徑正

詳細問題 PS C:\Users\wh109> conda init powershell conda : 無法將“conda”項識別為 cmdlet、函數、腳本文件或可運行程序的名稱。請檢查名稱的拼寫,如果包括路徑,請確保路徑正 確,然后再試一次。 所在位置 行:1 字符: 1conda init pow…

HQChart實戰教程58:K線主圖仿TradingView實現

本文將詳細介紹如何使用HQChart實現類似TradingView風格的K線主圖,包含完整的代碼實現和詳細注釋,適合金融圖表開發者和量化交易愛好者閱讀。 一、TradingView風格特點分析 在開始實現前,我們先分析TradingView的K線主圖核心特點: 簡潔現代的UI設計:深色背景、清晰的網格…

GitPython08-源碼解讀

GitPython08-源碼解讀 1-核心知識 1)gitPython核心代碼很多都是對git命令返回的結果進行解析,在此補充git命令的返回內容2)git ls-tree -> 查看某個提交或分支所對應的目錄樹3)源碼中Tree對應的業務邏輯 -> 獲取git ls-tre…

中科院開源HYPIR圖像復原大模型:1.7秒,老照片變8K畫質

目錄 前言 一、告別“龜速”藝術家,擁抱“閃電”打印機 二、不止是高清:它看得懂文字,更能理解你的心意 2.1 首先,它是位“文字保衛者” 2.2 其次,它還是個“細節創造家” 2.3 最后,它是一個能“聽懂…

設計Mock華為昇騰GPU的MindSpore和CANN的庫的流程與實現

在沒有華為昇騰GPU可用的情況下用C庫寫一個Mock MindSpore和CANN的庫,調用多核CPU和內存的資源來模擬GPU的算力,調試MindSpore和CANN的C代碼,做這個庫的基本流程步驟和詳細設計是什么? 要創建一個Mock庫來模擬華為昇騰GPU&#xf…

【AI問答記錄】grafana接收query請求中未攜帶step參數,后端基于intervalMs和maxDataPoints等參數計算step的邏輯

讓我詳細分析Grafana源碼中計算step的完整邏輯,它確實比簡單的intervalMs/1000復雜得多。 完整的Step計算流程 1. 入口點:[models.Parse](file://F:\JavaProject\grafana-release-11.2.0\pkg\promlib\models\query.go#L190-L274)函數 在pkg/promlib/mode…

再談亞馬遜云科技(AWS)上海AI研究院7月22日關閉事件

【科技明說 | 科技熱點關注】亞馬遜云科技(AWS)上海AI研究院已于2025年7月22日正式解散,這是亞馬遜在全球范圍內的最后一個海外研究中心的關閉。這個消息是否是真的,目前得到的印證來自其研發中心的首席科學家王敏捷在…

Python中的決策樹機器學習模型簡要介紹和代碼示例(基于sklearn)

一、決策樹定義 決策樹是一種監督學習算法,可用于**分類(Classification)和回歸(Regression)**任務。 它的結構類似樹狀結構: 內部節點:特征條件(如X > 2)葉子節點&am…

Redis集群分布式(Redis Cluster)底層實現原理詳細介紹

文章目錄一、Redis集群概念二、集群節點1. 節點如何啟動2. 節點的集群數據結構2.1 clusterNode結構2.2 clusterLink結構2.3 clusterState結構3. 節點如何加入集群三、數據分片機制1. 記錄節點的槽指派信息2. 傳播節點的槽指派信息3. 記錄集群所有槽的指派信息4. 節點的槽指派命…

【走遍美國精講筆記】第 1 課:林登大街 46 號

ACT 1-1 “我可以給您和您的小男孩拍張照嗎?” 【故事梗概】 自由攝影藝術家 Richard Stewart,正在為編出自己的影集《走遍美國》到處拍照。今天他在由紐約市曼哈頓區到斯塔滕島的渡船上工 作,回程中遇到了來自加州的一位黑人婦女 Martha Van…

Java中Lambda 表達式的解釋

從 Java 8 開始,Lambda 表達式成為 Java 的一等公民。它不僅讓代碼更簡潔,還為函數式編程打開了大門。如果你還沒真正理解或使用過 Lambda,這篇文章就是為你寫的。一、什么是 Lambda 表達式?Lambda 表達式是 Java 中的一種匿名函數…

Spring AI調用Embedding模型返回HTTP 400:Invalid HTTP request received分析處理

調用Embedding模型失敗 Spring AI項目使用的Embedding模型是公司平臺部署的,請求模型服務的時候報錯,返回了HTTP 400 - Invalid HTTP request received錯誤。然后換成云廠商在線Embedding模型地址,正常調通。我用Apifox直接調用公司的模型服務…

Pytorch-02數據集和數據加載器的基本原理和基本操作

1. 為什么要有數據集類和數據加載器類? 一萬個人會有一萬種獲取并處理原始數據樣本的代碼,這會導致對數據的操作代碼標準不一,并且很難復用。為了解決這個問題,Pytorch提供了兩種最基本的數據相關類: torch.utils.data…

無圖形界面的CentOS 7網絡如何配置

進入虛擬機輸入ip addr命令:從 ip addr命令的輸出可以明確看出 ??lo和 ens33是兩個不同的網絡接口(網卡)lo(回環接口)????作用??:虛擬的本地回環網卡,用于本機內部通信(如 1…