当前位置: 代码网 > it编程>编程语言>Java > springboot3.x使用@NacosValue无法获取配置信息的解决过程

springboot3.x使用@NacosValue无法获取配置信息的解决过程

2025年12月08日 Java 我要评论
一、问题描述springboot从2.x升级到3.x后,nacos的依赖包需要改成spring cloud的依赖包才能继续使用。升级好以后,首先,确定我的项目是能够连上nacos并且加载到配置信息的,

一、问题描述

springboot从2.x升级到3.x后,nacos的依赖包需要改成spring cloud的依赖包才能继续使用。升级好以后,首先,确定我的项目是能够连上nacos并且加载到配置信息的,因为数据库等信息都是从nacos加载过来,能够正常连接数据库。

但是我代码中使用@nacosvalue来动态获取和刷新配置信息的地方没有取到值,导致程序执行过程中报空指针异常。

我引入的nacos依赖包如下:

        <!-- nacos-config -->
        <dependency>
            <groupid>com.alibaba.cloud</groupid>
            <artifactid>spring-cloud-starter-alibaba-nacos-config</artifactid>
            <version>2023.0.1.2</version>
        </dependency>

@nacosvalue使用方式如下

    /**
     * 动态刷新的配置信息 appid
     */
    @nacosvalue(value = "${demo.app-id}", autorefreshed = true)
    private string appid;

在程序执行过程中,appid的值为null(没有取到),配置文件中确定有这个配置项,于是我尝试了一下使用@value来取值,发现能正常取到,但是我还需要动态刷新的功能,要怎么做呢?

二、解决方案

要实现取值和动态刷新,显然通过实验证明使用@nacosvalue是不得行了,因为使用了spring cloud的依赖包,所以根据官方文档显示,要通过 spring cloud 原生注解 @refreshscope + @value 来实现配置自动更新,我们可以用下面的方法达到同样的效果。

关于获取值: 在属性上使用@value

关于值刷新:在属性所在的类上加上@refreshscope

官方文档:nacos 融合 spring cloud,成为注册配置中心 | nacos 官网

参考案例如下

@refreshscope
@service
public class testserviceimpl {

  
    /**
     * 动态刷新的配置信息 appid
     */
    @value(value = "${demo.app-id}")
    private string appid;
}

总结

经过上面的方式对程序进行修改后,程序正常运行,配置项也能够正常获取和动态刷新了!

以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com