微服务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()); } }
控制台输出: