国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

配置改了還要重啟?SpringBoot + @RefreshScope 一招搞定動態刷新!

開發 前端
在云原生時代,動態配置刷新已成為高效運維的必備能力。掌握 @RefreshScope,讓你的 Spring Boot 應用真正具備“隨改隨用”的靈活性,為穩定和高效運行保駕護航。

在快速迭代的微服務環境里,配置更新幾乎是家常便飯。可一旦涉及傳統 Java 應用,稍微改動一下配置文件,就得重啟整個服務。這種方式帶來的問題很明顯:

  •  服務不可用:重啟期間業務中斷
  •  狀態丟失:內存中的數據被清空
  • 運維復雜:需要額外的上線發布流程

有沒有辦法做到 配置修改后立即生效,而不用停機重啟? 答案就是 —— Spring Boot + @RefreshScope。本文將帶你從原理到實戰,完整掌握如何利用 @RefreshScope 實現配置熱刷新,讓你的應用像樂高積木一樣靈活。

為什么要用動態刷新配置?

在微服務架構里,配置的靈活性決定了系統的可維護性。傳統的重啟模式不僅低效,還極容易在關鍵時刻拖垮業務。 相比之下,@RefreshScope 提供了零停機、動態更新的能力,幫助我們在不中斷服務的情況下快速應用新配置。

@RefreshScope 工作原理

我們先來看一下它的核心流程:

graph TD
    A[修改配置文件] --> B[發送POST刷新請求]
    B --> C[/actuator/refresh 端點]
    C --> D[RefreshScope 刷新機制]
    D --> E[銷毀舊Bean并創建新Bean]
    E --> F[新配置立即生效]
Syntax error in textmermaid version 10.3.1

其背后的關鍵技術包括:

  • 作用域代理:為 Bean 創建代理對象,攔截調用并動態應用配置
  • 配置綁定:@Value 注解值在刷新時重新綁定
  • Bean 生命周期管理:銷毀舊 Bean,創建新 Bean

動態刷新實現步驟

步驟 1:添加依賴

<!-- pom.xml -->
<dependencies>
    <!-- Web 基礎依賴 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>


    <!-- Actuator:核心監控和刷新能力 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>


    <!-- Spring Cloud 配置刷新支持 -->
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter</artifactId>
        <version>3.1.3</version>
    </dependency>
</dependencies>

步驟 2:啟用刷新功能

// src/main/java/com/icoderoad/config/DynamicConfigApp.java
@SpringBootApplication
@EnableRefreshScope   // 開啟配置熱刷新
public class DynamicConfigApp {
    public static void main(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:編寫支持動態刷新的 Service

// src/main/java/com/icoderoad/service/FeatureService.java
@Service
@RefreshScope  // 支持動態刷新
public class FeatureService {


    @Value("${app.feature.enabled}")
    private boolean featureEnabled;


    @Value("${app.feature.timeout}")
    private int timeout;


    @Value("${app.feature.retry-count}")
    private int 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:測試接口

// src/main/java/com/icoderoad/controller/ConfigController.java
@RestController
@RequestMapping("/config")
public class ConfigController {


    private final FeatureService featureService;


    public ConfigController(FeatureService featureService) {
        this.featureService = featureService;
    }


    @GetMapping
    public String getConfig() {
        return featureService.getFeatureConfig();
    }
}

步驟 6:觸發刷新

修改配置文件后執行:

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

返回示例:

["app.feature.timeout", "app.feature.welcome-msg"]

深入理解 @RefreshScope

核心實現其實是一個代理機制:

public class RefreshScopeProxy {
    private Object targetBean;


    public Object invoke(Method method, Object... args) {
        if (configChanged) {
            // 銷毀舊 Bean
            context.destroyBean(targetBean);
            // 重新創建
            targetBean = context.getBean(beanName);
        }
        return method.invoke(targetBean, args);
    }
}

應用場景

部分屬性刷新

@Component
@RefreshScope
public class PaymentService {
    @Value("${payment.timeout}")
    private int timeout;


    private final String apiVersion = "v1.0"; // 不會刷新
}

配置類整體刷新

@Configuration
@RefreshScope
public class AppConfig {


    @Bean
    @RefreshScope
    public FeatureService featureService() {
        return new FeatureService();
    }


    @Value("${app.theme}")
    private String theme;
}

生產環境最佳實踐

  • 保護刷新端點:改路徑并加認證
management:
  endpoints:
    web:
      base-path: /internal
      exposure:
        include: refresh
      path-mapping:
        refresh: secure-refresh
spring:
  security:
    user:
      name: admin
      password: {bcrypt}xxxx
  • 自動刷新方案

Git Webhook 自動觸發

配置中心(如 Nacos)聯動

spring:
  cloud:
    nacos:
      config:
        server-addr: localhost:8848
        auto-refresh: true

常見問題排查

  • 配置未生效

確認加了 @RefreshScope

刷新端點返回正確配置項

日志開啟調試

logging:
  level:
    org.springframework.cloud: DEBUG
  • 多實例不同步
curl -X POST http://host:port/actuator/bus-refresh

使用 Spring Cloud Bus

  • 內存泄漏
@PreDestroy
public void cleanUp() {
    // 清理資源
}

擴展應用場景

  • 動態功能開關:實時開關功能模塊
  • 日志級別調整:無需重啟即可改變日志策略
  • 數據庫連接池調優:運行中修改連接池參數

結語

通過 @RefreshScope,我們收獲了:

  • 配置實時生效
  •  零停機更新
  • 靈活的運維體驗
  • 更高的系統可用性

需要注意的是:

  • 敏感信息避免用動態刷新
  • 建議配合配置中心使用
  • 刷新端點必須加安全認證

在云原生時代,動態配置刷新已成為高效運維的必備能力。掌握 @RefreshScope,讓你的 Spring Boot 應用真正具備“隨改隨用”的靈活性,為穩定和高效運行保駕護航。

責任編輯:武曉燕 來源: 路條編程
相關推薦

2025-09-11 09:31:01

2022-09-06 11:53:00

開發計算

2010-03-16 08:59:45

Windows 7純凈版安裝

2020-10-20 08:01:30

MySQL密碼Windows

2023-12-18 08:24:09

LinuxPythonWord

2020-12-31 13:17:57

手機電腦多屏協同

2025-10-23 08:21:40

2021-03-06 09:54:22

PythonHTTP請求頭

2015-08-03 14:02:37

Windows 10升級

2025-04-18 09:49:48

2021-12-13 06:56:46

TCP孤兒連接

2021-08-21 23:33:16

iOS蘋果系統

2022-01-25 13:00:52

前端設計優化

2022-05-30 08:53:47

PycharmPython

2019-11-21 09:30:46

重啟配置服務

2013-07-30 11:24:33

SAP“簡化IT 一招

2018-08-14 05:21:43

路由器網絡運維網絡

2021-01-25 05:41:25

Flash Fliqlo軟件

2020-09-26 22:12:01

配置重啟文件

2021-11-22 11:30:37

JavaScript代碼瀏覽器
點贊
收藏

51CTO技術棧公眾號

亚洲一区网址| av资源亚洲| 韩国久久久久久| 国产精品久久久久影院老司| 亚洲麻豆视频| 亚洲制服丝袜一区| 久久久久久久久久久人体| 欧美日本韩国一区| 99porn视频在线| 一个人免费观看视频www在线播放 一个人免费视频www在线观看 | 97精品在线视频| 国产aaa一级片| 国产高清视频一区二区| 国产jizzjizz一区二区| 这里只有精品久久| 精品www久久久久奶水| 成人激情自拍| 性做久久久久久免费观看欧美| 国产精品女人网站| 亚洲欧洲成人| 国产精品久久久久久久久果冻传媒 | 中文在线最新版地址| 欧美bbbbb| 日韩av一卡二卡| 日本一二三区视频在线| 素人啪啪色综合| www成人在线观看| 欧美做受高潮电影o| 在线视频1区| 国产精品嫩草99a| 男女视频网站在线观看| 亚洲亚洲一区二区三区| 亚洲欧美国产一区二区三区| 精品少妇人妻av免费久久洗澡| 久久午夜激情| 国产一区二区久久精品| 美女喷白浆视频| 欧洲杯半决赛直播| 精品视频免费在线| 一区二区三区精品国产| 欧美午夜在线播放| 日韩欧美黄色动漫| 亚洲精品国产精品久久 | 久久综合九色欧美综合狠狠| 黄色片免费在线观看视频| 国产精品chinese在线观看| 一区二区在线观看免费| 国产欧美韩日| 欧美aaaaaa| 亚洲成a人v欧美综合天堂| 男裸体无遮挡网站| 亚洲视频一区| xxxx欧美18另类的高清| 男人的天堂在线播放| 亚洲乱码久久| 国产欧美欧洲| 男人操女人的视频在线观看欧美 | 亚洲一区二区四区蜜桃| 国产欧美一区二区三区不卡高清| 欧美一区二区| 日韩视频免费在线观看| 97人人做人人爽香蕉精品| 亚洲成a人片综合在线| 在线看小视频| 欧美日韩一卡二卡| 国产精品13p| 亚洲777理论| 九色在线播放| 久久婷婷国产综合国色天香| 婷婷久久青草热一区二区| 97久久中文字幕| 999国产精品999久久久久久| blacked蜜桃精品一区| 91在线国产观看| 蜜臀精品一区二区三区在线观看 | 午夜精品爽啪视频| 毛片av在线| 91麻豆免费看| 久热国产精品视频一区二区三区 | 亚洲国产aⅴ天堂久久| 肉大捧一出免费观看网站在线播放 | 91在线观看免费| 日本中文字幕一区二区| 蜜臀久久99精品久久久无需会员 | 日韩三级成人av网| 禁断一区二区三区在线| 久久久免费看| 亚洲人成亚洲精品| 中文在线不卡视频| 伊人精品一区| 你懂的网址一区二区三区| 成a人片亚洲日本久久| 免费一区二区三区在在线视频| 国产一区二区不卡在线| 国产精品毛片va一区二区三区| 99er精品视频| 91精品视频一区| 国产一区在线观看视频| 国产网站免费观看| 91在线你懂得| 日韩二区三区| 免费av手机在线观看| 亚洲人亚洲人成电影网站色| 日韩av在线电影网| 成久久久网站| 欧美久久一区二区| 在线看小视频| 亚洲精品一区久久久久久| 欧美尤物美女在线| 久久久97精品| 欧美日韩视频免费观看| 欧美一二三在线| 领导边摸边吃奶边做爽在线观看 | 国产亚洲成av人片在线观黄桃| 国产亚洲二区| 国产亚洲成aⅴ人片在线观看| 致1999电视剧免费观看策驰影院| 欧美婷婷在线| 国产日韩欧美视频在线| 奇米影视777在线欧美电影观看| 国产亚洲欧洲黄色| 欧美va天堂在线| 性刺激的欧美三级视频| 91免费视频大全| 国产在线更新| 日韩欧美精品在线视频| 黄色网页在线观看| 国产精品成人一区| 久久久久久影院| 亚洲影视中文字幕| 欧美女激情福利| 欧美精品性生活| 亚洲男人天堂2023| 久久男女视频| 外国精品视频在线观看| 欧美日韩亚洲激情| 男人的天堂在线视频免费观看 | 中文无码日韩欧| 国产三级中文字幕| 国产成人免费视频| 亚洲熟妇av一区二区三区漫画| 99re热视频这里只精品| 日本乱理伦在线| 日韩欧美综合在线| 欧美精品午夜| 中文字幕视频免费在线观看| 91黄色免费看| 青草在线视频| 国产一区二区高清不卡| 精品久久久久久亚洲精品| 天堂中文а√在线| 亚洲欧美综合精品久久成人| 成人国产网站| 9999在线观看| 日本一区二区视频在线| 激情视频免费| 日本91av在线播放| 亚洲天堂2016| av伊人久久| 未来日记在线观看| 国产精品夜夜夜一区二区三区尤| 午夜精品爽啪视频| 亚洲精品二区三区| h视频在线免费| 中文字幕欧美日韩| 国产美女久久久久| 无码少妇一区二区三区芒果| 亚洲综合久久久| 国产探花在线精品一区二区| 北条麻妃高清一区| 欧美中文字幕一区二区三区| 欧洲性视频在线播放| 欧美久久电影| 91天堂素人约啪| 国产亚洲精aa在线看| 日本999视频| 国产成人精品免费视频| 日韩国产欧美在线视频| 99视频精品免费| 久久免费精品视频| 亚洲承认在线| 日韩中文字幕在线视频观看| 久久精品99久久香蕉国产色戒| 91日韩一区二区三区| 精品欧美视频| 久久久久一区二区| 亚洲电影免费观看高清| 欧美成人免费全部网站| 99久久激情视频| 国产成人精品一区二区三区| 婷婷国产v国产偷v亚洲高清| 99精品视频网| 福利视频午夜| 亚洲精品日韩av| 精品免费一区二区三区| 亚洲激情播播| 免费国产在线观看| 国精产品一区一区三区有限在线| 亚洲精品你懂的| 99精品国产福利在线观看免费 |