微服务Nacos配置动态刷新方式(简易版)附配置
目录
- 实现方法
- 配置依赖 + yaml
- 验证效果
- 总结
实现方法
环境:Nacos、Java、SpringBoot等
主要是在boostrap.yaml
中的data-id
属性下配置refresh:true
来实现动态更新
配置依赖 + yaml
具体的版本参考官方的说明:官方版本说明
<!--读取bootstrap文件--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cpythonloud-starter-bootstrap</artifactId> </dependency> <!--统一配置管理--> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> </dependency> <!--nacos 服务注册发现--> <dependency> <groujavascriptpId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency>
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 python refresh: true - data-id: shared-sentinel.yaml refresh: true discovery: namespace: xxxxxxxxxxxxxxxx # 命名空间
验证效果
配置监听,更新时打印配置到控制台
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.EventjsListener; import org.springframework.core.env.Environment; import org.springframework.stereotype.Component; import java.util.Set; /** android * 监听配置变更事件,并打印所有变更的属性。 */ @Component @Slf4j public class ConfigRefreshListener { private final Environment environment; public ConfigRefreshListener(Environment environment) { this.environment = environment; } @EventListener public void onEnvironmentChangeEvent(EnvironmentChangeEvent event) { Set<String> 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()); } }
控制台输出:
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程客栈(www.devze.com)。
精彩评论