<cite id="ffb66"></cite><cite id="ffb66"><track id="ffb66"></track></cite>
      <legend id="ffb66"><li id="ffb66"></li></legend>
      色婷婷久,激情色播,久久久无码专区,亚洲中文字幕av,国产成人A片,av无码免费,精品久久国产,99视频精品3
      網易首頁 > 網易號 > 正文 申請入駐

      SpringBoot + @RefreshScope:動態刷新配置的終極指南

      0
      分享至

      Java精選面試題(微信小程序):5000+道面試題和選擇題,包含Java基礎、并發、JVM、線程、MQ系列、Redis、Spring系列、Elasticsearch、Docker、K8s、Flink、Spark、架構設計、大廠真題等,在線隨時刷題!

      無需重啟服務,實時更新配置! 本文將深入探索Spring Boot中@RefreshScope

      的神奇力量,讓你的應用配置在運行時動態刷新,徹底告別服務重啟的煩惱。

      一、為什么需要動態刷新配置?

      在傳統Java應用中,修改配置文件后必須重啟服務才能生效,這會導致:

      • 服務中斷:重啟期間服務不可用;

      • 狀態丟失:內存中的臨時數據被清空;

      • 運維復雜:需要復雜的發布流程;

      Spring Boot的@RefreshScope完美解決了這些問題,實現配置熱更新,讓應用像樂高積木一樣靈活重組!

      二、@RefreshScope核心原理1. 工作原理圖解

      graph TD
      A[修改配置文件] --> B[發送POST刷新請求]
      B --> C[/actuator/refresh 端點]
      C --> D[RefreshScope 刷新機制]
      D --> E[銷毀舊Bean并創建新Bean]
      E --> F[新配置立即生效]
      2. 關鍵技術解析
      • ?作用域代理:為Bean創建動態代理,攔截方法調用

      • ?配置綁定:當配置更新時,重新綁定@Value注解的值

      • ?Bean生命周期管理:銷毀并重新初始化被@RefreshScope標記的Bean

      三、完整實現步驟步驟1:添加必要依賴

       
      

      org.springframework.boot groupId>
      spring-boot-starter-web artifactId>
      dependency>

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

      org.springframework.cloud groupId>
      spring-cloud-starter artifactId>
      3.1.3 version>
      dependency>
      dependencies>
      步驟2:啟用刷新機制

      // 主應用類
      @SpringBootApplication
      @EnableRefreshScope // 關鍵注解:開啟配置刷新能力
      publicclassDynamicConfigApp {
      publicstaticvoidmain(String[] args) {
      SpringApplication.run(DynamicConfigApp.class, args);
      }
      }
      步驟3:配置application.yml

      # 應用基礎配置
      app:
      feature:
      enabled:true
      timeout:5000
      retry-count:3
      welcome-msg:"Hello, Dynamic Config!"


      # 暴露刷新端點(關鍵!)
      management:
      endpoints:
      web:
      exposure:
      include:refresh,health,info
      步驟4:創建動態配置Bean

      @Service
      @RefreshScope// 標記此Bean支持動態刷新
      publicclassFeatureService {
      // 注入可刷新的配置項
      @Value("${app.feature.enabled}")
      privateboolean featureEnabled;
      @Value("${app.feature.timeout}")
      privateint timeout;
      @Value("${app.feature.retry-count}")
      privateint retryCount;
      @Value("${app.feature.welcome-msg}")
      private String welcomeMessage;


      public String getFeatureConfig() {
      return String.format("""
      Feature Enabled: %s
      Timeout: %d ms
      Retry Count: %d
      Message: %s
      """, featureEnabled, timeout, retryCount, welcomeMessage);
      }
      }
      步驟5:創建測試控制器

      @RestController
      @RequestMapping("/config")
      publicclassConfigController {

      privatefinal FeatureService featureService;

      // 構造函數注入
      publicConfigController(FeatureService featureService) {
      this.featureService = featureService;
      }

      @GetMapping
      public String getConfig() {
      return featureService.getFeatureConfig();
      }
      }
      步驟6:觸發配置刷新

      修改application.yml后,發送刷新請求:

      curl -X POST http://localhost:8080/actuator/refresh

      響應示例(返回被修改的配置項):

      ["app.feature.timeout", "app.feature.welcome-msg"]
      四、深入理解@RefreshScope1. 作用域代理原理

      // 偽代碼:Spring如何實現動態刷新
      publicclassRefreshScopeProxyimplementsApplicationContextAware {
      private Object targetBean;
      @Override
      public Object invoke(Method method) {
      if (configChanged) {
      // 1. 銷毀舊Bean
      context.destroyBean(targetBean);
      // 2. 重新創建Bean
      targetBean = context.getBean(beanName);
      }
      return method.invoke(targetBean, args);
      }
      }
      2. 刷新范圍控制技巧

      場景1:只刷新特定Bean的部分屬性

      @Component
      @RefreshScope
      publicclassPaymentService {
      // 只有帶@Value的屬性會刷新
      @Value("${payment.timeout}")
      privateint timeout;
      // 不會被刷新的屬性
      privatefinalStringapiVersion="v1.0";
      }

      場景2:組合配置類刷新

      @Configuration
      @RefreshScope// 整個配置類可刷新
      publicclassAppConfig {
      @Bean
      @RefreshScope
      public FeatureService featureService() {
      returnnewFeatureService();
      }
      @Value("${app.theme}")
      private String theme;
      }
      五、生產環境最佳實踐1. 安全加固配置

      management:
      endpoint:
      refresh:
      enabled:true
      endpoints:
      web:
      exposure:
      include:refresh
      base-path:/internal# 修改默認路徑
      path-mapping:
      refresh:secure-refresh# 端點重命名


      # 添加安全認證
      spring:
      security:
      user:
      name:admin
      password:$2a$10$NVM0n8ElaRgg7zWO1CxUdei7vWoQP91oGycgVNCY8GQEx.TGx.AaC
      2. 自動刷新方案

      方案1:Git Webhook自動刷新


      方案2:配置中心聯動(Nacos示例)

      // bootstrap.yml
      spring:
      cloud:
      nacos:
      config:
      server-addr: localhost:8848
      auto-refresh: true # 開啟自動刷新
      六、常見問題排查問題1:刷新后配置未生效

      解決方案:

      • ? 檢查是否添加@RefreshScope

      • ? 確認刷新端點返回了修改的配置項

      • ? 查看日志:logging.level.org.springframework.cloud=DEBUG

      問題2:多實例刷新不同步

      解決方案:

      # 使用Spring Cloud Bus同步刷新
      curl -X POST http://host:port/actuator/bus-refresh
      問題3:配置更新導致內存泄漏

      預防措施:

      @PreDestroy
      public void cleanUp() {
      // 清理資源
      }
      七、擴展應用場景

      動態功能開關:實時開啟/關閉功能模塊

      # 修改后立即生效
      feature.new-checkout.enabled=true

      運行時日志級別調整

      @RefreshScope
      public class LogConfig {
      @Value("${logging.level.root}")
      private String logLevel;
      // 動態應用新日志級別
      }

      數據庫連接池調優

      # 動態修改連接池配置
      spring.datasource.hikari.maximum-pool-size=20
      結語:擁抱動態配置新時代

      通過@RefreshScope,我們實現了:

      • ? 零停機配置更新

      • ? 即時生效的應用參數

      • ? 更靈活的運維體驗

      • ? 資源利用最大化

      最佳實踐建議:

      • 敏感配置(如密碼)避免使用動態刷新

      • 配合配置中心(Nacos/Config Server)使用

      • 生產環境務必保護刷新端點

      技術的本質是讓復雜變簡單。掌握動態配置刷新,讓你的應用在云原生時代如虎添翼!

      來源:https://blog.csdn.net/renfusheng1993

      公眾號“Java精選”所發表內容注明來源的,版權歸原出處所有(無法查證版權的或者未注明出處的均來自網絡,系轉載,轉載的目的在于傳遞更多信息,版權屬于原作者。如有侵權,請聯系,筆者會第一時間刪除處理!

      最近有很多人問,有沒有讀者或者摸魚交流群!加入方式很簡單,公眾號Java精選,回復“加群”,即可入群!

      文章有幫助的話,點在看,轉發吧!

      特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。

      Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

      相關推薦
      熱點推薦
      癌癥去世的人越來越多?醫生反復提醒:寧可打打牌,也別做這5事

      癌癥去世的人越來越多?醫生反復提醒:寧可打打牌,也別做這5事

      蜉蝣說
      2025-12-19 22:01:31
      我外交部突然發出警告,如果外媒消息屬實,中日事態將會相當嚴重

      我外交部突然發出警告,如果外媒消息屬實,中日事態將會相當嚴重

      影孖看世界
      2025-12-19 19:14:04
      寧波小洛熙尸檢報告披露,大量內幕遠超想象,法醫一句話信息量大

      寧波小洛熙尸檢報告披露,大量內幕遠超想象,法醫一句話信息量大

      博士觀察
      2025-12-20 22:59:58
      拔“刺”高手,伊薩克對熱刺打入7球為英超生涯最多

      拔“刺”高手,伊薩克對熱刺打入7球為英超生涯最多

      懂球帝
      2025-12-21 03:04:14
      羅素:愚蠢的四大特征

      羅素:愚蠢的四大特征

      尚曦讀史
      2025-12-19 09:55:05
      除了戰敗認輸,已經無路可走?洪森軍隊遭重創:柬埔寨或爆發內亂

      除了戰敗認輸,已經無路可走?洪森軍隊遭重創:柬埔寨或爆發內亂

      策前論
      2025-12-20 23:12:53
      柬埔寨電詐分子上演大逃亡,場面震撼!

      柬埔寨電詐分子上演大逃亡,場面震撼!

      環球熱點快評
      2025-12-20 07:53:18
      “邪修大法”做家務就是快!一分錢不花,家里就窗明幾凈~

      “邪修大法”做家務就是快!一分錢不花,家里就窗明幾凈~

      裝修秀
      2025-12-19 11:30:03
      馬云預言或將應驗了?未來5年,比開藥店還要暴利的4個方向

      馬云預言或將應驗了?未來5年,比開藥店還要暴利的4個方向

      百態人間
      2025-12-20 05:25:03
      向高市早苗示好不到24小時,張本底細被扒,父母的黑歷史也被翻出

      向高市早苗示好不到24小時,張本底細被扒,父母的黑歷史也被翻出

      天天熱點見聞
      2025-12-20 06:08:30
      民進黨支持者竟造謠“嫌犯是大陸籍” 蔣萬安駁斥

      民進黨支持者竟造謠“嫌犯是大陸籍” 蔣萬安駁斥

      看看新聞Knews
      2025-12-21 00:07:04
      55歲鐘麗緹中年發福太多!胖到180斤 胸大腚圓 滿身肥肉穿吊帶

      55歲鐘麗緹中年發福太多!胖到180斤 胸大腚圓 滿身肥肉穿吊帶

      廣西阿妹香香
      2025-12-20 15:58:58
      上海一對情侶戀愛時男方說“我養你”,分手后女方以此為證,拒絕返還40余萬元!測謊實驗后,法院判了

      上海一對情侶戀愛時男方說“我養你”,分手后女方以此為證,拒絕返還40余萬元!測謊實驗后,法院判了

      都市快報橙柿互動
      2025-12-20 09:35:12
      克林頓與愛潑斯坦案受害者共浴照片披露

      克林頓與愛潑斯坦案受害者共浴照片披露

      揚子晚報
      2025-12-20 11:50:57
      快扔掉!戴一天,輻射量相當于拍117次胸片

      快扔掉!戴一天,輻射量相當于拍117次胸片

      FM93浙江交通之聲
      2025-10-28 00:01:43
      同仁堂集團就南極磷蝦油事件致歉:全面開展品牌清理行動

      同仁堂集團就南極磷蝦油事件致歉:全面開展品牌清理行動

      界面新聞
      2025-12-20 09:03:27
      北京阿姨20年守茅臺股票:90萬本金,分紅326萬,成本歸零!

      北京阿姨20年守茅臺股票:90萬本金,分紅326萬,成本歸零!

      趣文說娛
      2025-12-20 18:29:20
      歐爾班抨擊歐盟向烏提供貸款,波蘭外長向歐爾班頒發列寧勛章

      歐爾班抨擊歐盟向烏提供貸款,波蘭外長向歐爾班頒發列寧勛章

      山河路口
      2025-12-20 19:17:58
      歐盟動用俄資產的方案未獲通過

      歐盟動用俄資產的方案未獲通過

      環球時報國際
      2025-12-20 09:31:53
      轉發野三坡隧道事故視頻被要求刪除,還有網友稱發生了爆炸

      轉發野三坡隧道事故視頻被要求刪除,還有網友稱發生了爆炸

      映射生活的身影
      2025-12-20 19:18:13
      2025-12-21 03:44:49
      Java精選
      Java精選
      一場永遠也演不完的戲
      1764文章數 3859關注度
      往期回顧 全部

      科技要聞

      許四清:具身智能的"ChatGPT時刻"還未到來

      頭條要聞

      臺北致4人身亡嫌犯被指是"大陸籍" 蔣萬安回應

      頭條要聞

      臺北致4人身亡嫌犯被指是"大陸籍" 蔣萬安回應

      體育要聞

      我開了20年大巴,現在是一名西甲主帥

      娛樂要聞

      2026央視跨年晚會陣容曝光,豪華陣仗

      財經要聞

      求解“地方財政困難”

      汽車要聞

      嵐圖推進L3量產測試 已完成11萬公里實際道路驗證

      態度原創

      本地
      教育
      藝術
      時尚
      公開課

      本地新聞

      云游安徽|訪黃山云海古村,讀一城山水風骨

      教育要聞

      別逼孩子死磕高二數學了!我用3個“懶方法”,讓倒數娃沖進前20

      藝術要聞

      投資26億!廣州“獨角獸”的總部大樓,躍出地面!

      最顯腿細的騎士靴,誰穿誰是腿精

      公開課

      李玫瑾:為什么性格比能力更重要?

      無障礙瀏覽 進入關懷版 主站蜘蛛池模板: 国产黄在线观看| 亚洲第一成人在线| 国内视频自拍| 国产产无码乱码精品久久鸭| 免费av网站| 日韩乱码人妻无码系列中文字幕| 洱源县| 无码中文av有码中文av| 亚洲情人网| 激情97综合亚洲色婷婷五| 亚洲图片另类| 插入中文字幕在线一区二区三区| 99久久人妻无码中文字幕系列| 最新精品露脸国产在线| 精品国产一区二区三区香蕉| 日本va欧美ⅴa欧美Va精品 | 69国产| 国产精品免费看久久久无码| 97在线观看视频| 无码h黄肉动漫在线观看网站| 日韩福利在线视频| 免费成人av| AV资源吧首页| 亚洲国产精品高清久久久| 小鲜肉自慰网站| 尤物一区| 精品国产三级a∨在线欧美| 91在线播| 日本免费人成视频在线观看| 午夜诱惑| 久久99久久99精品免视看国产成人| 人妻被按摩师玩弄到潮喷| 和平区| 中文字幕在线日韩一区| 精品国产一区二区三区av性色| 淫色人妻网| 天天综合天天添夜夜添狠狠添| 97久久香蕉国产线看观看| 国产精品久久久久影院老司| 国产精品久久久| 久久99精品久久久久麻豆|