最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

一、SpringBoot、Cloud配置的讀取

1、SpringBoot啟動時會讀取并解析配置文件中的配置到內(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ā)布時,Server端會向Client端發(fā)送配置變化通知,Client端重新拉取配置并更新Environment對象中的配置數(shù)據(jù)(通常通過事件發(fā)布和監(jiān)聽機(jī)制來實現(xiàn))

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

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

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

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

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

  • Mybatis分頁插件PageHelper手寫實現(xiàn)示例

    Mybatis分頁插件PageHelper手寫實現(xiàn)示例

    這篇文章主要為大家介紹了Mybatis分頁插件PageHelper手寫實現(xiàn)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-08-08
  • Mybatis-Plus根據(jù)自定義注解實現(xiàn)自動加解密的示例代碼

    Mybatis-Plus根據(jù)自定義注解實現(xiàn)自動加解密的示例代碼

    我們把數(shù)據(jù)存到數(shù)據(jù)庫的時候,有些敏感字段是需要加密的,從數(shù)據(jù)庫查出來再進(jìn)行解密,如果我們使用的是Mybatis框架,那就跟著一起探索下如何使用框架的攔截器功能實現(xiàn)自動加解密吧,需要的朋友可以參考下
    2024-06-06
  • 強(qiáng)烈推薦IDEA提高開發(fā)效率的必備插件

    強(qiáng)烈推薦IDEA提高開發(fā)效率的必備插件

    這篇文章主要介紹了強(qiáng)烈推薦IDEA提高開發(fā)效率的必備插件,文中有非常詳細(xì)的圖文示例,對想要提高企業(yè)開發(fā)效率的小伙伴們有非常好的幫助,需要的朋友可以參考下
    2021-04-04
  • Jar包反編譯,修改代碼后,重新打jar包方式

    Jar包反編譯,修改代碼后,重新打jar包方式

    文章介紹了如何將一個jar包反編譯成java代碼,運(yùn)行和測試,然后重新打包,主要步驟包括:使用idea的decompiler插件反編譯jar包,將反編譯后的代碼導(dǎo)入maven項目,修改代碼并重新打包
    2026-03-03
  • 10個Java解決內(nèi)存溢出OOM的方法詳解

    10個Java解決內(nèi)存溢出OOM的方法詳解

    在Java開發(fā)過程中,有效的內(nèi)存管理是保證應(yīng)用程序穩(wěn)定性和性能的關(guān)鍵,不正確的內(nèi)存使用可能導(dǎo)致內(nèi)存泄露甚至是致命的OutOfMemoryError(OOM),下面我們就來學(xué)習(xí)一下有哪些解決辦法吧
    2024-01-01
  • 基于Java的正則表達(dá)式

    基于Java的正則表達(dá)式

    正則表達(dá)式,又稱正規(guī)表示法、常規(guī)表示法(英語:Regular Expression,在代碼中常簡寫為regex、regexp或RE),計算機(jī)科學(xué)的一個概念
    2017-05-05
  • freemarker簡介_動力節(jié)點Java學(xué)院整理

    freemarker簡介_動力節(jié)點Java學(xué)院整理

    FreeMarker是一個模板引擎,一個基于模板生成文本輸出的通用工具,使用純Java編寫,有興趣的可以了解一下
    2017-08-08
  • 詳解Spring學(xué)習(xí)總結(jié)——Spring實現(xiàn)AOP的多種方式

    詳解Spring學(xué)習(xí)總結(jié)——Spring實現(xiàn)AOP的多種方式

    這篇文章主要介紹了詳解Spring學(xué)習(xí)總結(jié)——Spring實現(xiàn)AOP的多種方式,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-01-01
  • Java簡單高效實現(xiàn)分頁功能

    Java簡單高效實現(xiàn)分頁功能

    這篇文章主要介紹了Java簡單高效實現(xiàn)分頁功能,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-08-08
  • SpringBoot+Redis防止接口重復(fù)提交問題

    SpringBoot+Redis防止接口重復(fù)提交問題

    這篇文章主要介紹了SpringBoot+Redis防止接口重復(fù)提交問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-06-06

最新評論

常德市| 汤原县| 建平县| 北海市| 民勤县| 蕉岭县| 漠河县| 繁昌县| 逊克县| 新昌县| 湟中县| 肇源县| 阿合奇县| 缙云县| 城市| 玉田县| 福泉市| 江门市| 宽甸| 云林县| 西贡区| 常熟市| 环江| 顺昌县| 理塘县| 普安县| 云霄县| 东光县| 社旗县| 吴江市| 全椒县| 井陉县| 安义县| 合水县| 琼中| 讷河市| 长子县| 白城市| 盖州市| 绿春县| 烟台市|