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)去了,但是沒有讀取到配置文件中的指定參數(shù)
第二種情況:配置文件就沒有解析注冊(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)成功!
如果確定上述文件配置沒有問(wèn)題的話,建議看一下是否是第二個(gè)坑,
第二個(gè)坑:Param ‘serviceName‘ is illegal, serviceName is blank
我就是上面確定文件類型對(duì)應(yīng)沒有問(wèn)題了,但是啟動(dòng)還是會(huì)報(bào)第一個(gè)錯(cuò)誤,經(jīng)過(guò)很多嘗試之后出現(xiàn)了第二個(gè)報(bào)錯(cuò),當(dāng)然同學(xué)們也肯定沒有出現(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ū)留言討論!文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-450379.html
我是灰小猿,我們下期見!
?文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-450379.html
到了這里,關(guān)于SpringCloud讀取Nacos配置中心報(bào)錯(cuò):Could not resolve placeholder ‘xxx’ in value ‘${xxx}的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!