SpringCloud讀取Nacos配置中心報(bào)錯(cuò)及遇到的坑:Could?not?resolve?placeholder?‘xxx’?in?value?‘${xxx}
hello,我是灰小猿,一個(gè)超會(huì)寫bug的程序員!
近期在寫一個(gè)spring cloud Alibaba讀取Nacos配置中心遠(yuǎn)程配置文件的內(nèi)容時(shí),出現(xiàn)了幾個(gè)比較坑的bug,在此記錄一下,幫大家避避坑。
我的使用場(chǎng)景:
- SpringBoot版本為2.6.0
- Spring Cloud版本為2021.0.1
- Spring Cloud Alibaba版本為2021.0.1.0
如果你的Cloud版本是2020.0.0版本之后的,建議直接先看是否是由第二個(gè)坑引起的。
第一個(gè)坑:Could not resolve placeholder ‘xxx’ in value ‘${xxx}
出現(xiàn)該報(bào)錯(cuò)的意思一般是使用@Value()注解讀取的配置文件數(shù)據(jù)無(wú)法解析
可能情況有兩種:一種是配置文件注冊(cè)進(jìn)去了,但是沒(méi)有讀取到配置文件中的指定參數(shù)
第二種情況:配置文件就沒(méi)有解析注冊(cè),導(dǎo)致無(wú)法讀取到參數(shù)信息,我的是由于第二種,解決在第二個(gè)坑。
如果第一種就檢查yml中參數(shù)格式是否正確,拼寫是否正確等
如果確認(rèn)都正確就可能是下面的原因:
因?yàn)楦鶕?jù)官方文件介紹,
因此需要檢查你本地代碼中的bootstrap.yml中寫的配置文件的名稱,是否能夠和Nacos中的配置文件的名稱對(duì)應(yīng)上,
在這里還應(yīng)該注意:Nacos中的配置文件的DataId中要寫入文件的后綴,并且Nacos是區(qū)分yaml和yml的,所以Nacos中的后綴要和本地bootstrap.yml中的file-extension的參數(shù)對(duì)應(yīng)!
正確的情況下,我的Nacos文件如下:
我的 bootstrap.yaml文件如下:
server: port: 8081 spring: application: name: nacos-config-a cloud: nacos: config: # 項(xiàng)目在啟動(dòng)時(shí),配置怎么去哪里拿去配置文件? server-addr: localhost:8848 username: nacos password: nacos file-extension: yaml # 配置文件類型 # namespace: public # namespace不寫時(shí)去默認(rèn)名稱空間獲取 # group: DEFAULT_GROUP # group不寫時(shí)去默認(rèn)組獲取 # prefix: nacos-config-a # 表示讀取哪個(gè)配置文件?不寫時(shí)默認(rèn)使用${spring.application.name}
以上配置文件名稱對(duì)應(yīng)完畢之后,先啟動(dòng)Nacos,再重啟啟動(dòng)本地IDEA,測(cè)試是否啟動(dòng)成功!
如果確定上述文件配置沒(méi)有問(wèn)題的話,建議看一下是否是第二個(gè)坑,
第二個(gè)坑:Param ‘serviceName‘ is illegal, serviceName is blank
我就是上面確定文件類型對(duì)應(yīng)沒(méi)有問(wèn)題了,但是啟動(dòng)還是會(huì)報(bào)第一個(gè)錯(cuò)誤,經(jīng)過(guò)很多嘗試之后出現(xiàn)了第二個(gè)報(bào)錯(cuò),當(dāng)然同學(xué)們也肯定沒(méi)有出現(xiàn)第二個(gè)報(bào)錯(cuò),仍然還是啟動(dòng)不起來(lái),
我們知道SpringCloud連接遠(yuǎn)程N(yùn)acos是需要使用bootstrap配置文件的,
但是在2020.0.0版本之后,SpringCloud不再默認(rèn)識(shí)別并加載bootstrap.yml配置了,也就是說(shuō)就算你有bootstrap.yml文件,在不引入相關(guān)依賴的情況下,系統(tǒng)啟動(dòng)也不會(huì)給你讀取的,坑?。?!
因此如果你需要啟動(dòng)bootstrap配置,需要在你的pom中加入如下依賴,
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-bootstrap</artifactId> </dependency>
之后重新加載pom,并啟動(dòng)項(xiàng)目即可!
如果大家有遇到相關(guān)問(wèn)題或其他解決,也歡迎在評(píng)論區(qū)留言討論!
到此這篇關(guān)于SpringCloud讀取Nacos配置中心報(bào)錯(cuò):Could not resolve placeholder ‘xxx’ in value ‘${xxx}的文章就介紹到這了,更多相關(guān)SpringCloud讀取Nacos配置中心報(bào)錯(cuò)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
mybatis?對(duì)于生成的sql語(yǔ)句?自動(dòng)加上單引號(hào)的情況詳解
這篇文章主要介紹了mybatis?對(duì)于生成的sql語(yǔ)句?自動(dòng)加上單引號(hào)的情況詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-01-01SpringData JPA中查詢接口Repository的使用
本文主要介紹了SpringData JPA中查詢接口Repository的使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-07-07利用Spring Boot如何開(kāi)發(fā)REST服務(wù)詳解
這篇文章主要給大家介紹了關(guān)于利用Spring Boot如何開(kāi)發(fā)REST服務(wù)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。2017-12-12關(guān)于Springboot的擴(kuò)展點(diǎn)DisposableBean的原理解析
這篇文章主要介紹了關(guān)于Springboot的擴(kuò)展點(diǎn)DisposableBean的原理解析,DisposableBean是一個(gè)接口,為Spring bean提供了一種釋放資源的方式 ,只有一個(gè)擴(kuò)展方法destroy(),需要的朋友可以參考下2023-05-05解析Java編程中對(duì)于包結(jié)構(gòu)的命名和訪問(wèn)
這篇文章主要介紹了Java編程中對(duì)于包結(jié)構(gòu)的命名和訪問(wèn),是Java入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下2015-12-12Springboot在有參構(gòu)造方法類中使用@Value注解取值
這篇文章主要介紹了Springboot在有參構(gòu)造方法類中使用@Value注解取值,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-06-06java 注解annotation的使用以及反射如何獲取注解
這篇文章主要介紹了java 注解annotation的使用以及反射如何獲取注解的相關(guān)資料,需要的朋友可以參考下2017-01-01Java實(shí)戰(zhàn)個(gè)人博客系統(tǒng)的實(shí)現(xiàn)流程
讀萬(wàn)卷書(shū)不如行萬(wàn)里路,只學(xué)書(shū)上的理論是遠(yuǎn)遠(yuǎn)不夠的,只有在實(shí)戰(zhàn)中才能獲得能力的提升,本篇文章手把手帶你用java+springboot+mybatis+redis+vue+elementui+Mysql實(shí)現(xiàn)一個(gè)個(gè)人博客系統(tǒng),大家可以在過(guò)程中查缺補(bǔ)漏,提升水平2022-01-01