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

Nacos(SpringBoot)配置加載及刷新方式

 更新時間:2024年12月10日 14:29:49   作者:ke_ek121  
文章主要介紹了NacosConfigAutoConfiguration的配置加載及刷新過程,包括NacosConfigBeanDefinitionRegistrar的注冊、NacosPropertySource的處理、自動刷新機制以及NacosValueAnnotationBeanPostProcessor的實現

Nacos(SpringBoot)配置加載及刷新

pom文件

<dependency>
            <groupId>com.alibaba.boot</groupId>
            <artifactId>nacos-config-spring-boot-starter</artifactId>
            <version>0.2.12</version>
        </dependency>

看看對應的META-INF/spring.factories,這里我們主要研究NacosConfigAutoConfiguration

如圖,@EnableNacosConfig 字面意思 開啟nacos配置,我們看下這個注解

這里引入了NacosConfigBeanDefinitionRegistrar,這個關鍵了,我們看看它都注入了哪些bean

這里我們看看這個postProcessor

在registerNacosConfigBeans中注入

然后invokeNacosPropertySourcePostProcessor調用

這里就是尋找nacosPropertySources(@NacosPropertySources或者@NacosPropertySource的元屬性)

首先調用addNacosPropertySource添加到environment

接下來就是看看是否配置了自動刷新,如果是,則會添加一個監(jiān)聽器;

監(jiān)聽器做的就是替換environment中的舊值;

接下來我們看一下

com.alibaba.nacos.spring.context.event.config.EventPublishingConfigService#addListener

加入之前,做了個適配,然后再加入。

我們看看這個DelegatingEventPublishingListener做了什么

再收到配置信息時,首先調用了實際的監(jiān)聽器的監(jiān)聽方法去替換環(huán)境中的配置,然后發(fā)布了NacosConfigReceivedEvent。接下來我們看看誰監(jiān)聽了這個事件,也是@NacosValue能夠刷新的原因所在

NacosValueAnnotationBeanPostProcessor

先看看@NacosValue是如何取值的

了解Spring中bean的創(chuàng)建的都知道,屬性注入是在populateBean()階段,調用后置處理器的postProcessPropertyValues()方法進行注入,NacosValueAnnotationBeanPostProcessor繼承了

com.alibaba.spring.beans.factory.annotation.AbstractAnnotationBeanPostProcessor,這里記錄了一個大致流程

org.springframework.beans.factory.annotation.InjectionMetadata#inject--->

com.alibaba.spring.beans.factory.annotation.AbstractAnnotationBeanPostProcessor.AnnotatedFieldElement#inject

com.alibaba.spring.beans.factory.annotation.AbstractAnnotationBeanPostProcessor#getInjectedObject

doGetInjectedBean是個抽象方法,我們看一下NacosValueAnnotationBeanPostProcessor的實現

可以看到,最終就是這樣拿到了值,然后進行注入。

接下來是值的自動刷新

說刷新之前,看一下下面這段代碼,也就是處理了哪些值進行自動刷新

這里先后處理了字段和方法

經過上面的處理,將autoRefreshed為true的目標加入到placeholderNacosValueTargetMap中去。

前面我們提到,NacosValueAnnotationBeanPostProcessor監(jiān)聽了NacosConfigReceivedEvent

我們看一下它的實現

簡單說呢,就是遍歷上面的placeholderNacosValueTargetMap進行一個值的更新。

總結

由上我們可知nacos在springboot環(huán)境下配置加載及刷新的大致過程

在平時使用時,如果要實現自動刷新,@NacosPropertySource@NacosValue兩個注解的autoRefresh屬性必須同時為true,使用Spring的注解@Value可以注入,但無法實現自動刷新

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • Java二維數組計算集合總結

    Java二維數組計算集合總結

    本篇文章給大家整理了關于Java二維數組計算集合的內容總結,有需要的讀者們可以參考下。
    2018-02-02
  • Java mybatis-plus詳解

    Java mybatis-plus詳解

    MyBatis-Plus是一個MyBatis的增強工具,在MyBatis的基礎上只做增強不做修改,為簡化開發(fā)、提高效率而生,本文給大家詳細講解一下MyBatis-Plus,需要的朋友參考下吧
    2021-09-09
  • Java實現的圖像查看器完整實例

    Java實現的圖像查看器完整實例

    這篇文章主要介紹了Java實現的圖像查看器,以完整實例形式較為詳細的分析了java處理圖片的相關技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-10-10
  • Mybatis的TypeHandler加解密數據實現

    Mybatis的TypeHandler加解密數據實現

    在我們數據庫中有些時候會保存一些用戶的敏感信息,所以就需要對這些數據進行加密,那么本文就介紹了Mybatis的TypeHandler加解密數據實現,感興趣的可以了解一下
    2021-06-06
  • Java基礎概述面試題復習

    Java基礎概述面試題復習

    這篇文章主要介紹了java基礎面試題,文中的描述非常詳細,對正在學習java基礎的小伙伴們有非常好的幫助,需要的朋友可以參考下,希望能給你帶來幫助
    2021-08-08
  • 一文詳解Java中的監(jiān)聽器(Listener)

    一文詳解Java中的監(jiān)聽器(Listener)

    這篇文章主要介紹了Java中監(jiān)聽器(Listener)的相關資料,監(jiān)聽器模式是一種設計模式,用于處理異步事件和通知,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2025-03-03
  • java連接orcale數據庫示例分享

    java連接orcale數據庫示例分享

    這篇文章主要介紹了java連接orcale數據庫示例,需要的朋友可以參考下
    2014-02-02
  • springboot集成nacos實現自動刷新的示例代碼

    springboot集成nacos實現自動刷新的示例代碼

    研究nacos時發(fā)現,springboot版本可使用@NacosValue實現配置的自動刷新,本文主要介紹了springboot集成nacos實現自動刷新的示例代碼,感興趣的可以了解一下
    2023-11-11
  • SpringBoot集成Druid連接池連接MySQL8.0.11

    SpringBoot集成Druid連接池連接MySQL8.0.11

    這篇博客簡單介紹spring boot集成druid連接池的簡單配置和注意事項,文中通過示例代碼介紹的非常詳細,需要的朋友們下面隨著小編來一起學習學習吧
    2021-07-07
  • SpringBoot如何實現文件下載

    SpringBoot如何實現文件下載

    這篇文章主要介紹了SpringBoot如何實現文件下載問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-11-11

最新評論