Nacos更新配置参数不生效

Nacos配置动态刷新:@RefreshScope解决注解不生效问题
本文介绍了在Spring Boot应用中,使用@Value注解从Nacos配置中心读取配置时,修改配置不生效的问题。通过在拦截器类上添加@RefreshScope注解,实现了配置的动态刷新,确保了代码能够实时获取Nacos中的最新配置值。

代码使用@Value注解方式获取参数,但是在nacos中修改noLoginRequireUrl值不生效

@Component
public class AccessTokenInterceptor implements HandlerInterceptor
    /**
     * 免登录URL,多个用英文分号隔开。
     */
    @Value("${noLoginRequireUrl}")
    private String noLoginRequireUrl;
}

修复方法,在类上添加@RefreshScope注解:

@Component
@RefreshScope
public class AccessTokenInterceptor implements HandlerInterceptor
    /**
     * 免登录URL,多个用英文分号隔开。
     */
    @Value("${noLoginRequireUrl}")
    private String noLoginRequireUrl;
}

.

### Nacos 动态配置不生效的原因分析 当使用Nacos作为配置中心时,如果遇到动态配置不生效的情况,通常是因为`dataId`设置不当。具体来说,在默认情况下,`application.name`不能单独在`application.yml`中定义,因为这会导致数据ID变为`null.yml`,从而使得Nacos无法正确加载对应的配置文件[^4]。 ### 正确的配置方法 为了使Nacos能够正常识别并应用配置,有两种推荐的方法: #### 方法一:调整`bootstrap.yml` 将应用程序名称放置于`bootstrap.yml`而非`application.yml`内。这样可以确保在初始化阶段就能获取到正确的`application.name`值,进而构建有效的`dataId`用于查找相应的配置文件。 ```yaml spring: application: name: your-app-name ``` #### 方法二:指定前缀 如果不希望更改现有项目的结构,则可以在`application.yml`或其他地方显式地设定`spring.cloud.nacos.config.prefix`属性,并将其设为与期望的应用程序名相同的内容。此方式同样能帮助形成合法的数据标识符(data ID),以便成功拉取远程配置。 ```yaml spring: cloud: nacos: config: prefix: ${spring.application.name} ``` ### 关键点总结 - `application.name`应置于`bootstrap.yml`或通过`spring.cloud.nacos.config.prefix`参数间接提供给Nacos。 - 设置`refresh-enabled`, `auto-refresh`, 和 `enable-remote-sync-config`等选项虽然有助于增强功能,但对于解决核心问题并非必要条件。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值