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

讀寫nacos的配置中心的參數(shù)及變動監(jiān)聽方式

 更新時間:2026年02月11日 17:16:19   作者:OK_boom  
Spring應用可以通過NacosDataSource下載配置參數(shù),使用ConfigService的publishConfig方法更新Nacos上的配置,但同一服務內部更新配置不會觸發(fā)configUpdate事件,ConfigService也提供了監(jiān)聽事件功能

nacos有配置中心的功能,那么spring應用如何下載nacos的配置參數(shù)?

最簡單的方法

是借組sentinel的NacosDataSource完成這個操作,如下例子:


@Configuration
@Slf4j
@Getter
public class AuthenConfig {
  @Value("${spring.cloud.nacos.discovery.server-addr}")
  private String nacosAddrs;
  private String groupId="my-seta-business";
  private String dataId="my-seta-business:authen-Config";

  private EasyShiroProperties properties;
  @PostConstruct
  public void init(){
    ReadableDataSource<String, EasyShiroProperties> nacosDataSource = new NacosDataSource<>(nacosAddrs, groupId, dataId,
            source -> JsonUtils.fromJson(source, new TypeReference<>() {
            }));
    synchronized (nacosDataSource.getProperty()) {
      nacosDataSource.getProperty().addListener(new PropertyListener(){
        private void updateLocal(Object value){
          properties=(EasyShiroProperties)value;
        }
        @Override
        public void configUpdate(Object value) { //nacos的配置更新時觸發(fā)
           log.info("configUpdate:"+value);
           updateLocal(value);
        }

        @Override
        public void configLoad(Object value) {//第一次下載nacos配置時觸發(fā)
          log.info("configLoad:"+value);
          updateLocal(value);
        }
      });
    }
  }
}

監(jiān)聽器有兩個事件

一個是首次下載觸發(fā)的configLoad,一個是nacos配置更新觸發(fā)的configUpload。

那么如何用代碼更新nacos上的配置?用ConfigService的publishConfig,下面例子:

String groupId="my-seta-business";
    String dataId="my-seta-business:authen-Config";
    try {
      ConfigService configService = NacosFactory.createConfigService("128.30.14.249:8848");
      System.out.println(configService.publishConfig(dataId, groupId, "{\"sessionTimeOut\":3600,\"cacheEnabled\":true,\"sessionRegion\":\"my-seata-business-region\",\"sessionTokenName\":\"access-token\",\"jwtTokenName\":\"access-token\"}"));
    } catch (NacosException e) {
      e.printStackTrace();
    }

值得注意的是

同一個服務里面即使用上述方法更新配置到nacos,也不會觸發(fā)configUpdate事件,configUpdate必須是本服務以外的地方發(fā)生更新才會觸發(fā),可見作者比較嚴謹。

如果我沒用sentinel,只想用ConfigService監(jiān)聽配置中心的數(shù)據(jù)異動又怎樣做呢?ConfigService也有監(jiān)聽事件,代碼如下 :

/**
 * Created by rocklee on 2022/4/20 14:13
 */
@Slf4j
@Configuration
public class AccountConfig implements InitializingBean , DisposableBean {
  @Value("${spring.application.name}")
  private String app;
  @Value("${spring.profiles.active:}")
  private String profile;
  @Value("${spring.cloud.nacos.config.file-extension}")
  private String fileExtension;
  @Value("${spring.cloud.nacos.config.server-addr}")
  private String configServerAddr;
  private ConfigService configService;
  @PostConstruct
  public void init(){
  }

  @Override
  public void afterPropertiesSet() throws Exception {
    String dataId=app+(StringUtils.isBlank(profile)?"": "-"+profile)+"."+fileExtension;
    final String group="DEFAULT_GROUP";
    Properties properties=new Properties();
    properties.put(PropertyKeyConst.SERVER_ADDR, configServerAddr);
    configService= NacosFactory.createConfigService(properties);
    log.info("nacos config:"+configService.getConfig(dataId,group,1000));
    try {
      configService.addListener(dataId, group, new AbstractListener() {
        @Override
        public void receiveConfigInfo(String configInfo) {
          System.out.println(configInfo);
        }
      });
    } catch (NacosException e) {
      e.printStackTrace();
    }
  }

  @Override
  public void destroy() throws Exception {
    configService.shutDown();
  }
}

總結

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

相關文章

  • Mybatis mapper接口動態(tài)代理開發(fā)步驟解析

    Mybatis mapper接口動態(tài)代理開發(fā)步驟解析

    這篇文章主要介紹了Mybatis mapper接口動態(tài)代理開發(fā)步驟解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-07-07
  • Swagger在java中的運用及常見問題解決

    Swagger在java中的運用及常見問題解決

    Swagger插件是一款深受Java開發(fā)者喜愛的工具,它在前后端分離的開發(fā)模式下發(fā)揮著重要作用,這篇文章主要介紹了Swagger在java中的運用及常見問題的相關資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2025-06-06
  • hibernate 常用方法介紹

    hibernate 常用方法介紹

    這篇文章介紹了hibernate的常用方法,有需要的朋友可以參考一下
    2013-09-09
  • Springboot集成CSRF防攻擊過程

    Springboot集成CSRF防攻擊過程

    本文介紹了Springboot集成CSRF防攻擊的方法,通過設置域名或路徑白名單來過濾未知鏈接,從而達到防護目的,主要涉及兩個類:CSRFFilterConfigUtils防護配置工具類和CsrfFilter防護過濾類
    2025-11-11
  • Spring解決泛型擦除的思路詳解

    Spring解決泛型擦除的思路詳解

    這篇文章主要介紹了Spring解決泛型擦除的思路,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2024-01-01
  • java實現(xiàn)客戶端向服務器發(fā)送文件

    java實現(xiàn)客戶端向服務器發(fā)送文件

    這篇文章主要為大家詳細介紹了java實現(xiàn)客戶端向服務器發(fā)送文件,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • 詳解高性能緩存Caffeine原理及實戰(zhàn)

    詳解高性能緩存Caffeine原理及實戰(zhàn)

    Caffeine是基于Java 8開發(fā)的,提供了近乎最佳命中率的高性能本地緩存組件,Spring5開始不再支持Guava Cache,改為使用Caffeine。Caffeine提供的內存緩存使用參考Google guava的API
    2021-06-06
  • Java 單鏈表數(shù)據(jù)結構的增刪改查教程

    Java 單鏈表數(shù)據(jù)結構的增刪改查教程

    這篇文章主要介紹了Java 單鏈表數(shù)據(jù)結構的增刪改查教程,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-10-10
  • Java實現(xiàn)多個數(shù)組間的排列組合

    Java實現(xiàn)多個數(shù)組間的排列組合

    這篇文章主要為大家詳細介紹了Java實現(xiàn)多個數(shù)組間的排列組合,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-02-02
  • JAVA驗證碼工具實例代碼

    JAVA驗證碼工具實例代碼

    這篇文章主要介紹了JAVA驗證碼工具實例代碼,需要的朋友可以參考下
    2018-03-03

最新評論

鄂尔多斯市| 阳江市| 广东省| 成安县| 全椒县| 蚌埠市| 墨竹工卡县| 广宗县| 汝阳县| 定襄县| 五指山市| 卫辉市| 滕州市| 广宗县| 青川县| 文登市| 卢湾区| 兴义市| 鹤壁市| 任丘市| 兴业县| 无锡市| 吉木乃县| 乐业县| 高尔夫| 阜宁县| 宜兰县| 惠州市| 博野县| 芷江| 什邡市| 新和县| 迁安市| 柳河县| 三门峡市| 应用必备| 汝南县| 钦州市| 达州市| 尼木县| 吉木乃县|