SpringCloud將Nacos作為配置中心實(shí)現(xiàn)流程詳解
1、引入依賴
<dependencies> <!--nacos-config--> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> </dependency> <!--nacos-discovery--> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency> <!--web + actuator--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> </dependencies>
YML的類別
Nacos
同springcloud-config
一樣,在項(xiàng)目初始化時(shí),要保證先從配置中心進(jìn)行配置拉取,拉取配置之后,才能保證項(xiàng)目的正常啟動(dòng)。springboot
中配置文件的加載是存在優(yōu)先級(jí)順序的,bootstrap
優(yōu)先級(jí)高于application
注意點(diǎn) 在Cloud高版本中(例如:2021.0.3),你可能還需要引入以下依賴
<!-- bootstrap 啟動(dòng)器:解決Cloud高版本下不先加載bootstrap.properties問(wèn)題 see github issue:https://github.com/alibaba/spring-cloud-alibaba/issues/1994 --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-bootstrap</artifactId> </dependency>
2、配置Bootstrap.yml
# nacos配置
server:
port: 3377spring:
application:
name: nacos-config-client
cloud:
nacos:
discovery:
server-addr: localhost:8848 #Nacos服務(wù)注冊(cè)中心地址
config:
server-addr: localhost:8848 #Nacos作為配置中心地址
file-extension: yaml #指定yaml格式的配置
group: TEST_GROUP
namespace: ea7be215-37d0-4175-958c-a8af3545f115
# ${spring.application.name}-${spring.profile.active}.${spring.cloud.nacos.config.file-extension}
共享配置 & 多配置文件
spring:
application:
name: nacos-config-multi
main:
allow-bean-definition-overriding: true
cloud:
nacos:
username: ${nacos.username}
password: ${nacos.password}
config:
server-addr: ${nacos.server-addr}
namespace: ${nacos.namespace}
# 用于共享的配置文件
shared-configs:
- data-id: common-mysql.yaml
group: SPRING_CLOUD_EXAMPLE_GROUP- data-id: common-redis.yaml
group: SPRING_CLOUD_EXAMPLE_GROUP- data-id: common-base.yaml
group: SPRING_CLOUD_EXAMPLE_GROUP# 常規(guī)配置文件
# 優(yōu)先級(jí)大于 shared-configs,在 shared-configs 之后加載
extension-configs:
- data-id: nacos-config-advanced.yaml
group: SPRING_CLOUD_EXAMPLE_GROUP
refresh: true- data-id: nacos-config-base.yaml
group: SPRING_CLOUD_EXAMPLE_GROUP
refresh: true
3、配置application.yml
spring:
profiles:
active: dev # 表示開(kāi)發(fā)環(huán)境
4、Controller測(cè)試接口
/** * 配置客戶端控制器 * * @author LiJunYi * @RefreshScope 支持Nacos的動(dòng)態(tài)刷新功能 */ @RestController @RefreshScope public class ConfigClientController { @Value("${config.info}") private String configInfo; @GetMapping("/config/info") public String getConfigInfo() { return configInfo; } }
在Nacos中添加配置信息
匹配規(guī)則-理論
之所以需要配置 spring.application.name
,是因?yàn)樗菢?gòu)成 Nacos
配置管理 dataId
字段的一部分。
dataId的完整格式
${prefix}-${spring.profile.active}.${file-extension}
1、prefix
默認(rèn)為 spring.application.name
的值,也可以通過(guò)配置項(xiàng)spring.cloud.nacos.config.prefix
來(lái)配置。
2、spring.profile.active
即為當(dāng)前環(huán)境對(duì)應(yīng)的 profile
。注意:當(dāng)spring.profile.active
為空時(shí),對(duì)應(yīng)的連接符 –
也將不存在datald
的拼接格式變成${prefix}.${file-extension}
3、file-exetension
為配置內(nèi)容的數(shù)據(jù)格式, 可以通過(guò)配置項(xiàng)spring.cloud .nacos.config.file-extension
來(lái)配置。 目前只支持properties
和yaml
類型。
最后公式:
配置新增
![(undefined?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
圖解
Namespace+Group+DatalD講解
三者關(guān)系
類似Java里面的 package
名和類名, 最外層的 namespace
是可以用于區(qū)分部署環(huán)境的,Group
和 DataID
邏輯上區(qū)分兩個(gè)目標(biāo)對(duì)象。
三者情況
默認(rèn)情況:
Namespace
= public
,Group
= DEFAULT_GROUP
,默認(rèn)Cluster
是 DEFAULT
Nacos
默認(rèn)的命名空間是 public
,Namespace
主要用來(lái)實(shí)現(xiàn)隔離。
比方說(shuō)我們現(xiàn)在有三個(gè)環(huán)境:開(kāi)發(fā)、測(cè)試、生產(chǎn)環(huán)境,我們就可以創(chuàng)建三個(gè)Namespace
,不同的Namespace
之間是隔離的。
Group
默認(rèn)是 DEFAULT_GROUP
,Group
可以把不同的微服務(wù)劃分到同一個(gè)分組里面去
Sevice
就是微服務(wù);一個(gè)Service
可以包含多個(gè)Cluster(集群)
,Nacos
默認(rèn)Cluster
是DEFAULT
, Cluster
是對(duì)指定微服務(wù)的一個(gè)虛擬劃分。
比方說(shuō)為了容災(zāi),將Service微服務(wù)分別部署在了杭州機(jī)房和廣州機(jī)房,這時(shí)就可以給杭州機(jī)房的 Service微服務(wù)起一個(gè)集群名稱(Hz),給廣州機(jī)房的Service微服務(wù)起一個(gè)集群名稱(GZ), 還可以盡量讓同一個(gè)機(jī)房的微服務(wù)互相調(diào)用,以提升性能。
最后是Instance
,就是微服務(wù)的實(shí)例。
實(shí)例-三種方案加載配置
1、dataId方案
指定spring.profile.active
和配置文件的DatalD
來(lái)使不同環(huán)境下讀取不同的配置
默認(rèn)空間+默認(rèn)分組+新建dev
和test
兩個(gè)Datald
通過(guò)spring.profile.active
屬性就能進(jìn)行多環(huán)境下配置文件的讀取
新建兩個(gè)不同的配置
YML
2、Group方案
Nacos配置詳情
YML
3、Namespace方案
Nacos新增命名空間
bootstrao.yml
# nacos配置
server:
port: 3377spring:
application:
name: nacos-config-client
cloud:
nacos:
discovery:
server-addr: localhost:8848 #Nacos服務(wù)注冊(cè)中心地址
config:
server-addr: localhost:8848 #Nacos作為配置中心地址
file-extension: yaml #指定yaml格式的配置
group: TEST_GROUP
namespace: ea7be215-37d0-4175-958c-a8af3545f115
Nacos作為配置中心的內(nèi)容主要就是這些,更多詳細(xì)知識(shí)點(diǎn)可以查閱官方文檔哦。
到此這篇關(guān)于SpringCloud將Nacos作為配置中心實(shí)現(xiàn)流程詳解的文章就介紹到這了,更多相關(guān)SpringCloud Nacos內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java編程實(shí)現(xiàn)服務(wù)器端支持?jǐn)帱c(diǎn)續(xù)傳的方法(可支持快車(chē)、迅雷)
這篇文章主要介紹了Java編程實(shí)現(xiàn)服務(wù)器端支持?jǐn)帱c(diǎn)續(xù)傳的方法,涉及Java文件傳輸?shù)南嚓P(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-11-11Spring?Boot實(shí)現(xiàn)配置文件的自動(dòng)加載和刷新功能
這篇文章我們介紹了Spring?Boot如何實(shí)現(xiàn)配置文件的自動(dòng)加載和刷新,本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2023-05-05Spring boot2基于Mybatis實(shí)現(xiàn)多表關(guān)聯(lián)查詢
這篇文章主要介紹了Spring boot2基于Mybatis實(shí)現(xiàn)多表關(guān)聯(lián)查詢,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-04-04Lombok不生效,提示java:?找不到符號(hào)的解決方案
這篇文章主要介紹了Lombok不生效,提示java:?找不到符號(hào)的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-07-07解決SpringCloud Gateway配置自定義路由404的坑
這篇文章主要介紹了解決SpringCloud Gateway配置自定義路由404的坑,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-09-09程序包org.springframework.boot不存在的問(wèn)題解決
本文主要介紹了程序包org.springframework.boot不存在的問(wèn)題解決,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2024-09-09