专业的编程技术博客社区

网站首页 > 博客文章 正文

踩坑日记(七):Nacos 配置中心不会自动刷新

baijin 2024-10-01 07:15:29 博客文章 4 ℃ 0 评论

前言

项目采用的是 spring-cloud-alibaba:2.2.2.RELEASE 版本,使用 Nacos 做配置中心。按照官方说明文档搭建成功启动项目加载配置成功,然后就飘了!感觉好简单这么容易就搭建起来了,就开始写其他代码。

部署到测试环境后同事反馈说在配置中心修改了配置后没有加载出来新的配置......

排查

1、检查 bootstrap.properties 配置文件

配置文件中已经配置了 refresh-enabled:true :

spring:
	cloud:
    nacos:
      config:
				refresh-enabled: true

2、检查 config 配置类

config 配置类中采用的是 @value 注解,如果要使 Nacos 动态刷新配置剩下需要在配置类上增加 @RefreshScope 配置项。

问题解决!!!

思考

这是一个细节问题,平时多注意一下就会避免。

如果每个用到 @value 类上面都要加 @RefreshScope,那就太复杂了,如果把 @RefreshScope 加到启动类上可以支持全局的 @value 主机动态刷新吗?

尝试......

失败!

其他替代方案

其实可以采用 @ConfigurationProperties 可以替换 @value,并且支持的功能更加强大,具体对比如下:

增加依赖

在pom.xml 文件中增加以下配置:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-configuration-processor</artifactId>
    <optional>true</optional>
</dependency>

YML 配置

user:
  name: Jack
  age: 22

代码示例

@Getter
@Setter
@Component
@ConfigurationProperties(prefix = "user")
public class UserConfig {
    /**
     * 姓名
     */
    private String  name;

    /**
     * 年龄
     */
    private String  age;
}

总结

  1. 仅在 bootstrap.properties 文件中增加 refresh-enabled:true 配置是不能自动刷新。
  2. 如果使用 @Value 注解,那么需要在每个类上都添加上 @RefreshScope 配置。
  3. 推荐使用 @ConfigurationProperties 替换 @value。

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表