nacos问题处理1——spring-cloud中多方案实现nacos动态刷新配置

3 篇文章 0 订阅
3 篇文章 0 订阅
本文介绍了如何在Spring-Boot和Spring-CloudAlibaba项目中使用Nacos作为配置中心,包括如何配置动态刷新、使用@RefreshScope注解和@NacosValue注解,以及终极解决方案——通过ConfigurableApplicationContext获取动态配置。
摘要由CSDN通过智能技术生成

在微服务项目使用和运维中,Nacos作为配置中心使用率很高,很大程度上源于阿里巴巴背书且开源,后面有众多的社区支持讨论。

既然已经使用了Nacos,配置中心必然要能支持动态刷新,即就是修改了部分外部数据参数,后台可以动态获取相应的配置信息,而无需通过重启服务来实现。

这样做不仅仅是减轻了大量重复性工作,最重要的是可以在生产环境避免不可控的问题出现。

1.先说下基础项目的运行环境

java:>=1.8
spring-boot:2.7.13
spring-cloud:2021.0.8
spring-cloud-alibaba:2021.0.5.0
nacos:>=2.1.0

2.首先要修改bootstrap.yml共享配置,可以自定义多个。

# Spring
spring:
  application:
    # 应用名称
    name: app-test
  profiles:
    # 环境配置
    active: dev
  cloud:
    nacos:
      discovery:
        # 服务注册地址,支持ip和域名
        server-addr: 10.13.112.75:8848
      config:
        # 配置中心地址,支持ip和域名
        server-addr: nacos210:8848
        # 配置文件格式
        file-extension: yml
        #### 支持共享多个配置
        #### 配合@RefreshScope注解,可以解决nacos动态刷新配置问题
        shared-configs[0]:
          data-id: application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
          refresh: true
        shared-configs[1]:
          data-id: service-custom-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
          refresh: true

3.然后在spring管理的类上加上注解@RefreshScope

4.最后验证测试

  • 动态修改配置

  • 后台动态刷新获取配置

5.其他解决方案:

  • 可以使用注解@NacosValue,类似@Value,配置参看步骤2

此方案未验证成功,欢迎各位大佬指导。

@NacosValue(value = "${report.weekPlan.currentWeek}",autoRefreshed = true)
private Integer currentWeek;
  • 利用配置文件上下文ConfigurableApplicationContext类

此方案为终极解决方法,基本都能实现动态取值。

@Autowired
private ConfigurableApplicationContext configurableApplicationContext;

//仅展示部分关键代码
String property = configurableApplicationContext.getEnvironment().getProperty("report.weekPlan.currentWeek");

  • 9
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值