Nacos配置中心的配置文件的匹配規(guī)則及說(shuō)明
Nacos配置中心配置文件的匹配
詳情見nacos的官方文檔
1.配置微服務(wù)配置中心文件
在 Nacos Spring Cloud 中,數(shù)據(jù)集(Data Id) 的配置完整格式如下:
${prefix}-${spring.profile.active}.${file-extension}prefix:就是配置的服務(wù)名,默認(rèn)是你配置的,通俗的說(shuō)就是服務(wù)注冊(cè)時(shí)注冊(cè)到服務(wù)中心的服務(wù)名的值:
spring:
application:
name: shop-coupon #服務(wù)名spring.profile.active:是配置開發(fā)環(huán)境的值,一個(gè)程序不可能總是在開發(fā)環(huán)境,可能需要切換到測(cè)試環(huán)境,上線環(huán)境,他們的配置文件都是不同的,所以為了方便環(huán)境切換,我們配置不同的開發(fā)環(huán)境文檔。
比如在application.yml中有配置dev,就是開發(fā)環(huán)境:
spring:
profiles:
active: dev #表示開發(fā)環(huán)境最后我們需要指定配置文件類型,默認(rèn)是properties。
我們可以自己指定文件類型,比如配置:
spring:
cloud:
nacos:
config:
file-extension: yaml #指定配置文件類型為yaml文件指定好配置文件類型,我們最終在配置中心新增配置文件就是:shop-coupon-dev.yaml。

2.常用細(xì)節(jié)
1)、命名空間:配置隔離:
默認(rèn): public(保 留空間);默認(rèn)新增的所有配置都在public空間。隔離開發(fā),測(cè)試,生產(chǎn)環(huán)境。

可以添加命名空間,然后在bootstrap.yml配置文件添加命名空間的id即可切換到對(duì)應(yīng)的命名空間,使用對(duì)應(yīng)空間下的配置文件:
cloud:
nacos:
config:
namespace: a65a17de-e8f3-4d00-8d87-91549aaa0f02 #對(duì)應(yīng)創(chuàng)建的命名空間的UUID也可以基于微服務(wù)來(lái)創(chuàng)建命名空間,用每一個(gè)微服務(wù)名來(lái)命名,達(dá)到隔離每一個(gè)微服務(wù)的目的,哪一個(gè)微服務(wù)需要配置直接去對(duì)應(yīng)的微服務(wù)空間下找配置即可,使得項(xiàng)目更加結(jié)構(gòu)化。
2)、配置集:所有配置的集合。
3)、配置集ID:類似文件名。
Data ID:類似文件名

4)、配置分組:按時(shí)間等因素影響,可以去分組配置,比如雙11組,雙12組等等
- 默認(rèn)所有的配置集都屬于: DEFAULT_ GROUP;我們也可以自己適配。
- 一般的建議是使用命名空間來(lái)隔離服務(wù),即每個(gè)微服務(wù)創(chuàng)建一個(gè)命名空間,使用配置分組來(lái)區(qū)分環(huán)境:dev、test、prod等。
3.從一個(gè)配置中心加載多個(gè)配置集
將一個(gè)配置文件按功能拆分成不同的文件,然后在程序組合加載到一起組成一個(gè)完整的配置文件。
比如拆分一下配置:
server:
port: 5001
spring:
profiles:
active: dev #表示開發(fā)環(huán)境
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://139.224.67.81:3306/zunhui_sms?useUnicode=true&characterEncoding=utf-8&useSSL=false
username: root
password: root
application:
name: shop-coupon
spring:
application:
name: shop-coupon
cloud:
nacos:
config:
server-addr: 127.0.0.1:8848
file-extension: yaml #指定配置文件類型為yaml文件
discovery:
server-addr: 127.0.0.1:8848
mybatis-plus:
mapper-locations: classpath/mapper/**/*.xml
global-config:
db-config:
id-type: auto #配置id自增就可以拆分成三個(gè)文件,一個(gè)關(guān)務(wù)數(shù)據(jù)源的datasource.yml的,一個(gè)關(guān)于mybatis的,剩下的一個(gè)other配置:

只需要在配置文件中使用ext-config就可以加載多個(gè)配置文件:

nacos作為配置中心的基本配置規(guī)則就是這些。
Nacos配置中心配置不成功問(wèn)題
1.掃描包
首先在啟動(dòng)類中尋找掃描包,有可能沒(méi)有把路徑填充成功
2.關(guān)于配置nacos
在配置中
spring:
profiles:
active: 要激活的環(huán)境信息
cloud:
nacos:
config:
server-addr: 自己配置
file-extension: yaml或者yml
namespace: 這里的命名空間需要看nacos具體配置
group: DEFAULT_GROUP一般都是默認(rèn)組
application:
name: 項(xiàng)目名稱例如:
spring: profiles: test cloud: nacos: config: server-addr: 10.100.66.222:8084 namespace: 3bd056b5-8696-44dd-a87f-635057sdaax2 username: asdas password: sdadd file-extension: yml
上面是我司的實(shí)際代碼(以更改部分?jǐn)?shù)據(jù))
具體的nacos內(nèi)部配置

在這個(gè)過(guò)程中也遇到了一些問(wèn)題
例如: 在添加配置后,選中的是yml配置,但是由于中間沒(méi)有加空格導(dǎo)致不生效,找了30多分鐘才發(fā)現(xiàn)這個(gè)問(wèn)題
MAX_USE: 222
222前面是有空格的!!
3.為何沒(méi)有熱加載?
你可能會(huì)有疑惑,為什么nacos明明已經(jīng)修改好了變量的值,但卻在項(xiàng)目中發(fā)現(xiàn)原來(lái)的值并沒(méi)有修改完成呢?
其實(shí)可能只是忘記了一個(gè)注解
@RefreshScope
4.配置好為何還是沒(méi)有熱加載?
可能你也和我犯了同一個(gè)問(wèn)題,那就是沒(méi)有將要修改的值交給spring統(tǒng)一進(jìn)行管理,
也就是沒(méi)有加上類似@Controller,@Service,@Component等注解
如果已經(jīng)加上了的話,那么不要用new來(lái)創(chuàng)建對(duì)象,new出來(lái)的也不會(huì)實(shí)現(xiàn)熱加載,
只有==@Autowired==自動(dòng)裝配的才可以保證同步nacos的配置
另外需要配置==@Component注解==而不是@Configuration注解,
@Componet 注解是原生的Bean
5.另一個(gè)坑
在nacos配置的過(guò)程中,想要對(duì)一個(gè)變量進(jìn)行動(dòng)態(tài)賦值,前面的步驟的坑都沒(méi)踩,但是還是不行
5.1 static
就是在要修改的值前面有static修飾,被修飾的話,是獨(dú)立與該類的,不與類的實(shí)例變量有依賴關(guān)系。
解決方法:
1. 將所有的static全部刪去
2. 可以使用lombok的Data注解
3. 之后使用到這個(gè)變量的地方都使用get變量名的方法
5.2 String和Integer
當(dāng)我們從Nacos中獲取動(dòng)態(tài)更新的值的時(shí)候,最好不用integer進(jìn)行接收,不然可能會(huì)報(bào)錯(cuò)

如圖的Integer就是無(wú)法接受nacos中的配置
感謝崔帥朋同學(xué)的提醒!讓為父了解了另一種情況
6.如何打開項(xiàng)目中的nacos
找到配置文檔的bootstrap.yml文件,在其中的nacos的addr后面加上/nacos放在瀏覽器中即可打開相應(yīng)的nacos網(wǎng)站
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
springboot項(xiàng)目實(shí)現(xiàn)斷點(diǎn)續(xù)傳功能
這篇文章主要介紹了springboot項(xiàng)目實(shí)現(xiàn)斷點(diǎn)續(xù)傳,本文通過(guò)示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-08-08
springboot如何解決跨域后session獲取不到sessionId不一致
這篇文章主要介紹了springboot如何解決跨域后session獲取不到sessionId不一致問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-01-01
Java中將UUID存儲(chǔ)為Base64字符串的方法實(shí)現(xiàn)
使用Base64編碼來(lái)對(duì)UUID存儲(chǔ)在一些特定的場(chǎng)合被廣泛的使用,本文主要介紹了Java中將UUID存儲(chǔ)為Base64字符串的方法實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下2024-04-04
Spring?Service中的@Service注解的使用小結(jié)
本文主要介紹了Spring?Service中的@Service注解的使用小結(jié),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2024-11-11
Java的DataInputStream和DataOutputStream數(shù)據(jù)輸入輸出流
這里我們來(lái)看一下Java的DataInputStream和DataOutputStream數(shù)據(jù)輸入輸出流的使用示例,兩個(gè)類分別繼承于FilterInputStream和FilterOutputStream:2016-06-06
Intellij IDEA 2018配置Java運(yùn)行環(huán)境的方法步驟
這篇文章主要介紹了Intellij IDEA 2018配置Java運(yùn)行環(huán)境的方法步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09
Java自動(dòng)化工具Ant的基礎(chǔ)使用教程
這篇文章主要介紹了Java自動(dòng)化工具Ant的基礎(chǔ)使用教程,例子在Windows系統(tǒng)下操作演示,講解了Ant基本的文件操作和屬性,需要的朋友可以參考下2016-02-02

