目录

微服务Nacos-配置动态刷新简易版附配置

【微服务】Nacos 配置动态刷新(简易版)(附配置)

1、实现方法

环境:Nacos、Java、SpringBoot等 主要是在boostrap.yaml中的data-id属性下配置refresh:true来实现动态更新

2、配置依赖 + yaml

具体的版本参考官方的说明:[官方版本说明]( alibaba/wiki/%E7%89%88%E6%9C%AC%E8%AF%B4%E6%98%8E)

org.springframework.cloud spring-cloud-starter-bootstrap

com.alibaba.cloud spring-cloud-starter-alibaba-nacos-config

com.alibaba.cloud spring-cloud-starter-alibaba-nacos-discovery

boostrap.yaml 配置 spring: application: name: xxx-service # 微服务名称 profiles: active: dev cloud: nacos: server-addr: xxx.xxx.xxx.xxx:8848 # Nacos 地址 config: namespace: xxxxxxxxxxxxxxxxxxx # 命名空间 file-extension: yaml shared-configs:

  • data-id: shared-common.yaml refresh: true # 要开启刷新配置,下面的同理
  • data-id: shared-redis.yaml refresh: true
  • data-id: shared-jdbc.yaml refresh: true
  • data-id: shared-log.yaml refresh: true
  • data-id: shared-swagger.yaml refresh: true
  • data-id: shared-sentinel.yaml refresh: true discovery: namespace: xxxxxxxxxxxxxxxx # 命名空间

3、验证效果

配置监听,更新时打印配置到控制台 package com.lingchuangdao.creator.config; import lombok.extern.slf4j.Slf4j; import org.springframework.cloud.context.environment.EnvironmentChangeEvent; import org.springframework.cloud.context.scope.refresh.RefreshScopeRefreshedEvent; import org.springframework.context.event.EventListener; import org.springframework.core.env.Environment; import org.springframework.stereotype.Component; import java.util.Set; /**

  • 监听配置变更事件,并打印所有变更的属性。 */ @Component @Slf4j public class ConfigRefreshListener { private final Environment environment; public ConfigRefreshListener(Environment environment) { this.environment = environment; } @EventListener public void onEnvironmentChangeEvent(EnvironmentChangeEvent event) { Set keys = event.getKeys(); log.info(“配置已更新,变更的属性数量: {}”, keys.size()); // 打印所有变更的配置项 for (String key : keys) { log.info(“配置变更 - 属性: {}, 新值: {}”, key, environment.getProperty(key)); } } @EventListener public void onRefreshScopeRefreshed(RefreshScopeRefreshedEvent event) { log.info(“RefreshScope已刷新,Bean: {}”, event.getName()); } }

控制台输出: https://i-blog.csdnimg.cn/direct/da6ce08d71c74fd098635b0573cdebd1.png