springboot3.x使用@NacosValue無法獲取配置信息的解決過程
一、問題描述
springboot從2.x升級到3.x后,nacos的依賴包需要改成Spring Cloud的依賴包才能繼續(xù)使用。升級好以后,首先,確定我的項(xiàng)目是能夠連上nacos并且加載到配置信息的,因?yàn)閿?shù)據(jù)庫等信息都是從nacos加載過來,能夠正常連接數(shù)據(jù)庫。
但是我代碼中使用@NacosValue來動態(tài)獲取和刷新配置信息的地方?jīng)]有取到值,導(dǎo)致程序執(zhí)行過程中報(bào)空指針異常。
我引入的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使用方式如下
/**
* 動態(tài)刷新的配置信息 appId
*/
@NacosValue(value = "${demo.app-id}", autoRefreshed = true)
private String appId;在程序執(zhí)行過程中,appId的值為null(沒有取到),配置文件中確定有這個配置項(xiàng),于是我嘗試了一下使用@Value來取值,發(fā)現(xiàn)能正常取到,但是我還需要動態(tài)刷新的功能,要怎么做呢?
二、解決方案
要實(shí)現(xiàn)取值和動態(tài)刷新,顯然通過實(shí)驗(yàn)證明使用@NacosValue是不得行了,因?yàn)槭褂昧薙pring Cloud的依賴包,所以根據(jù)官方文檔顯示,要通過 Spring Cloud 原生注解 @RefreshScope + @Value 來實(shí)現(xiàn)配置自動更新,我們可以用下面的方法達(dá)到同樣的效果。
關(guān)于獲取值: 在屬性上使用@Value
關(guān)于值刷新:在屬性所在的類上加上@RefreshScope
官方文檔:Nacos 融合 Spring Cloud,成為注冊配置中心 | Nacos 官網(wǎng)
參考案例如下
@RefreshScope
@Service
public class TestServiceImpl {
/**
* 動態(tài)刷新的配置信息 appId
*/
@Value(value = "${demo.app-id}")
private String appId;
}總結(jié)
經(jīng)過上面的方式對程序進(jìn)行修改后,程序正常運(yùn)行,配置項(xiàng)也能夠正常獲取和動態(tài)刷新了!
以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java使用跳轉(zhuǎn)結(jié)構(gòu)實(shí)現(xiàn)隊(duì)列和棧流程詳解
這篇文章主要介紹了Java使用跳轉(zhuǎn)結(jié)構(gòu)實(shí)現(xiàn)隊(duì)列和棧流程,連續(xù)結(jié)構(gòu)和跳轉(zhuǎn)結(jié)構(gòu)是數(shù)據(jù)結(jié)構(gòu)中常見的兩種基本數(shù)據(jù)結(jié)構(gòu),而我們本次的主角棧和隊(duì)列都 既可以使用使用跳轉(zhuǎn)結(jié)構(gòu)實(shí)現(xiàn)也可以使用連續(xù)結(jié)構(gòu)實(shí)現(xiàn)2023-04-04
Java TreeMap升序|降序排列和按照value進(jìn)行排序的案例
這篇文章主要介紹了Java TreeMap升序|降序排列和按照value進(jìn)行排序的案例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-10-10
SpringBoot整合Knife4j的實(shí)戰(zhàn)示例
Knife4j是一個為Java MVC框架集成Swagger生成API文檔的增強(qiáng)解決方案,本文就來介紹一下SpringBoot整合Knife4j的實(shí)戰(zhàn)示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2025-08-08
詳解SpringBoot是如何整合SpringDataRedis的?
今天給大家?guī)淼氖顷P(guān)于Java的相關(guān)知識,文章圍繞著SpringBoot是如何整合SpringDataRedis展開,文中有非常詳細(xì)的介紹及代碼示例,需要的朋友可以參考下2021-06-06
SpringCloud Hystrix-Dashboard儀表盤的實(shí)現(xiàn)
這篇文章主要介紹了SpringCloud Hystrix-Dashboard儀表盤的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08
Maven將代碼及依賴打成一個Jar包的方式詳解(最新推薦)
這篇文章主要介紹了Maven將代碼及依賴打成一個Jar包的方式,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-05-05
Spring?Data?JPA查詢方式及方法名查詢規(guī)則介紹
這篇文章主要介紹了Spring?Data?JPA查詢方式及方法名查詢規(guī)則,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-11-11

