it编程 > 编程语言 > Java

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

9人参与 2025-12-08 Java

一、问题描述

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)

您想发表意见!!点此发布评论

推荐阅读

浅谈JVM闪崩问题定位排查

12-08

Mybatis的mapper文件中#和$的区别示例解析

12-08

SpringCache 缓存使用注意事项、问题解决与优化策略

12-08

SpringBoot整合AOP及使用案例实战

12-08

SpringBoot中Entity、DTO、VO的通俗理解与实战案例

12-08

Java RestTemplate post请求参数问题及解决

12-08

猜你喜欢

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

发表评论