欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

SpringCloud配置動態(tài)更新原理解析

 更新時(shí)間:2025年01月13日 09:53:38   作者:壞貓警長  
在微服務(wù)架構(gòu)的浩瀚星海中,服務(wù)配置的動態(tài)更新如同魔法一般,能夠讓應(yīng)用在不重啟的情況下,實(shí)時(shí)響應(yīng)配置的變更,Spring Cloud作為微服務(wù)架構(gòu)中的佼佼者,其動態(tài)配置更新的能力尤為引人注目,本文給大家介紹了SpringCloud配置動態(tài)更新原理,需要的朋友可以參考下

一、SpringBoot、Cloud配置的讀取

1、SpringBoot啟動時(shí)會讀取并解析配置文件中的配置到內(nèi)存變量,保存在Environment對象的屬性中。如果引入了配置中心如Nacos、Apollo,其中的配置也會被SpringBoot讀取并保存在Environment對象中。

2、可以使用編碼的方式獲取配置數(shù)據(jù):

String name = environment.getProperty("name");

3、可以使用@Value注解直接把配置賦值給Bean的屬性:

這里的name變量值直接來自于Environment對象。

二、SpringCloud配置動態(tài)刷新

1、SpringBoot配置文件和SpringCloud配置中心中的配置,區(qū)別只是來源不同,都是被讀取加載到Environment對象中生效的:

2、當(dāng)配置中心修改了配置并發(fā)布時(shí),Server端會向Client端發(fā)送配置變化通知,Client端重新拉取配置并更新Environment對象中的配置數(shù)據(jù)(通常通過事件發(fā)布和監(jiān)聽機(jī)制來實(shí)現(xiàn))

此時(shí)如果使用編碼方式從Environment對象中獲取配置(而不是@Value注解的屬性),則已經(jīng)是更新后的值。

三、更新@RefreshScope注解Bean的屬性值

1、對于使用@Value注解獲取配置的屬性,不會隨配置數(shù)據(jù)的更新而更新,因?yàn)锽ean對象已經(jīng)創(chuàng)建完成,配置變化時(shí)只是更新Environment中的數(shù)據(jù),并沒有更新Bean屬性值的動作發(fā)生。

2、但是如果Bean上有@RefreshScope注解,則其中的@Value屬性值會隨配置更新而更新。

原理:使用@RefreshScope標(biāo)記的Bean,Spring會為其創(chuàng)建代理對象,代理對象中持有原生對象,@Value的屬性值位于原生對象中。SpringBoot中的配置中心客戶端在收到服務(wù)端的變更通知后,會先后發(fā)布兩個(gè)事件:1、觸發(fā)Environment重新加載相關(guān)配置數(shù)據(jù)。2、觸發(fā)所有@RefreshScope的Bean置為null,則在這些Bean下次使用時(shí)重新創(chuàng)建,重新從Environment中獲取配置,即實(shí)現(xiàn)@Value屬性值的更新。

注:從SpringCloud配置動態(tài)更新的原理可知,諸如數(shù)據(jù)庫連接配置,在配置中心修改了配置后只是會更新@RefreshScope注解Bean中的@Value屬性,如果要動態(tài)修改數(shù)據(jù)庫信息,則還需要重建DataSource對象、清除舊連接等操作。

以上就是SpringCloud配置動態(tài)更新原理解析的詳細(xì)內(nèi)容,更多關(guān)于SpringCloud配置動態(tài)更新的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Java中的Spring循環(huán)依賴詳情

    Java中的Spring循環(huán)依賴詳情

    這篇文章主要介紹了Java中的Spring循環(huán)依賴詳情,文章基于Java的相關(guān)資料展開詳細(xì)介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-04-04
  • 如何基于ssm框架實(shí)現(xiàn)springmvc攔截器

    如何基于ssm框架實(shí)現(xiàn)springmvc攔截器

    這篇文章主要介紹了如何基于ssm框架實(shí)現(xiàn)springmvc攔截器,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-07-07
  • java之a(chǎn)ssert關(guān)鍵字用法案例詳解

    java之a(chǎn)ssert關(guān)鍵字用法案例詳解

    這篇文章主要介紹了java之a(chǎn)ssert關(guān)鍵字用法案例詳解,本篇文章通過簡要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • java8 stream中Collectors.toMap空指針問題及解決

    java8 stream中Collectors.toMap空指針問題及解決

    這篇文章主要介紹了java8 stream中Collectors.toMap空指針問題及解決方案,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • Mybatis分頁的實(shí)現(xiàn)及使用注解開發(fā)操作

    Mybatis分頁的實(shí)現(xiàn)及使用注解開發(fā)操作

    這篇文章主要介紹了Mybatis分頁的實(shí)現(xiàn)及使用注解開發(fā)操作,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • Spring定時(shí)任務(wù)注解@Scheduled詳解

    Spring定時(shí)任務(wù)注解@Scheduled詳解

    這篇文章主要介紹了Spring定時(shí)任務(wù)注解@Scheduled詳解,@Scheduled注解是包org.springframework.scheduling.annotation中的一個(gè)注解,主要是用來開啟定時(shí)任務(wù),本文提供了部分實(shí)現(xiàn)代碼與思路,需要的朋友可以參考下
    2023-09-09
  • java計(jì)算方差、標(biāo)準(zhǔn)差(均方差)實(shí)例代碼

    java計(jì)算方差、標(biāo)準(zhǔn)差(均方差)實(shí)例代碼

    在本篇文章里小編給大家分享了關(guān)于java計(jì)算方差、標(biāo)準(zhǔn)差(均方差)實(shí)例代碼以及相關(guān)知識點(diǎn),需要的朋友們可以參考下。
    2019-08-08
  • Springboot集合前端實(shí)現(xiàn)進(jìn)度條顯示功能實(shí)例

    Springboot集合前端實(shí)現(xiàn)進(jìn)度條顯示功能實(shí)例

    這篇文章主要介紹了使用進(jìn)度條提升用戶體驗(yàn)的原因,特別是在處理大文件上傳、下載或長時(shí)間運(yùn)行的操作時(shí),進(jìn)度條通過實(shí)時(shí)反饋任務(wù)進(jìn)度,減少用戶的不確定感,文中給出了詳細(xì)的代碼示例,需要的朋友可以參考下
    2024-11-11
  • spring boot實(shí)戰(zhàn)教程之shiro session過期時(shí)間詳解

    spring boot實(shí)戰(zhàn)教程之shiro session過期時(shí)間詳解

    這篇文章主要給大家介紹了關(guān)于spring boot實(shí)戰(zhàn)教程之shiro session過期時(shí)間的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起看看吧。
    2017-10-10
  • Java操作MongoDB數(shù)據(jù)庫的示例代碼

    Java操作MongoDB數(shù)據(jù)庫的示例代碼

    這篇文章主要介紹了Java操作MongoDB的示例代碼,幫助大家更好的理解和學(xué)習(xí)使用Java,感興趣的朋友可以了解下
    2021-04-04

最新評論