一个网站的建立需要什么,网站群建设费用,江苏建设工程造价管理网站,长春搜索排名提升一、问题描述
springboot从2.x升级到3.x后#xff0c;nacos的依赖包需要改成Spring Cloud的依赖包才能继续使用。升级好以后#xff0c;首先#xff0c;确定我的项目是能够连上nacos并且加载到配置信息的#xff0c;因为数据库等信息都是从nacos加载过来#xff0c;能够正…一、问题描述
springboot从2.x升级到3.x后nacos的依赖包需要改成Spring Cloud的依赖包才能继续使用。升级好以后首先确定我的项目是能够连上nacos并且加载到配置信息的因为数据库等信息都是从nacos加载过来能够正常连接数据库。
但是我代码中使用NacosValue来动态获取和刷新配置信息的地方没有取到值导致程序执行过程中报空指针异常。我引入的nacos依赖包如下 !-- nacos-config --dependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-starter-alibaba-nacos-config/artifactIdversion2023.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;
}
经过上面的方式对程序进行修改后程序正常运行配置项也能够正常获取和动态刷新了