- 添加 pom依賴
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<!-- spring-cloud 版本一定要和spring boot 版本相對(duì)應(yīng) 具體對(duì)應(yīng)關(guān)系查看官網(wǎng)https://spring.io/projects/spring-cloud -->
<spring-cloud.version>Hoxton.SR3</spring-cloud.version>
<spring-cloud-alibaba.version>0.9.0.RELEASE</spring-cloud-alibaba.version>
<skipTests>true</skipTests>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<scope>import</scope>
<type>pom</type>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>${spring-cloud-alibaba.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
-
創(chuàng)建不同環(huán)境配置的命名空間
image.png
image.png
image.png
Data Id
Data Id的默認(rèn)值為{spring.profile.active}.
{spring.application.name}
spring.cloud.nacos.config.file-extension的默認(rèn)值為properties
當(dāng)spring.profiles.active未配置時(shí),則匹配{spring.application.name}.properties時(shí)置森,若還存在
{spring.profiles.active}.properties斗埂,則默認(rèn)匹配后者,若不存在暇藏,則會(huì)自動(dòng)匹配前者
使用spring.application.name作為Data Id的前綴
Group
Group配置項(xiàng)蜜笤,并沒(méi)有固定的規(guī)定,可以用作多環(huán)境盐碱、多模塊把兔、多版本之間區(qū)分配置
Namespace
使用命名空間來(lái)區(qū)分不同環(huán)境的配置,Nacos控制臺(tái)對(duì)不同的Namespace做了Tab欄分組展示
- 添加配置文件 bootstrap.yml
spring:
application:
name: nacos-config
#指定開(kāi)發(fā)環(huán)境
profiles:
active: dev
main:
#當(dāng)遇到同樣名字的時(shí)候瓮顽,是否允許覆蓋注冊(cè)
allow-bean-definition-overriding: true
# 配置服務(wù)注冊(cè)中心
cloud:
nacos:
config:
# 配置中心的地址
server-addr: 127.0.0.1:8848
#默認(rèn)為Public命名空間,可以省略不寫 自定義命名空間使用ID值
namespace: 9c1b431c-dfc0-45e6-8f17-c9bcaac71edc
#指定配置群組 --如果是Public命名空間 則可以省略群組配置
group: DEFAULT_GROUP
#文件名 -- 如果沒(méi)有配置則默認(rèn)為 ${spring.appliction.name}
prefix: ${spring.application.name}
# 指定配置中心中配置文件的格式
file-extension: yml
discovery:
#指定注冊(cè)中心的地址县好,如果你不需要注冊(cè)該服務(wù),也可以去掉該項(xiàng)暖混,并刪除discovery依賴
server-addr: 127.0.0.1:8848
- 在Nacos 控制臺(tái)添加配置信息 http://127.0.0.1:8848/nacos/ 切換到不同的Tab下添加對(duì)應(yīng)環(huán)境的配置信息
image.png
DataId設(shè)置:
命名規(guī)則:{prefix}-{spring.profiles.active}.${file-extension}
prefix默認(rèn)為 spring.application.name的值缕贡,也可以通過(guò)配置項(xiàng)spring.cloud.nacos.config.prefix來(lái)配置。
Data ID = {spring.cloud.nacos.config.prefix}.{spring.profiles.active}.{spring.cloud.nacos.config.file-extension} 最終拼接出來(lái)的就是:nacos-config-dev.yml
Group = ${spring.cloud.nacos.config.group}
詳細(xì)對(duì)照bootstrap.yml中配置信息來(lái)命名
- 代碼中運(yùn)用
第一種:
@RestController
@RequestMapping("nacos")
//啟用動(dòng)態(tài)配置刷新
@RefreshScope
public class NacosConfigController {
//獲取配置的值
@Value("${company.code}")
private String compayCode;
@RequestMapping("/test")
public Object getZkConfig(HttpRequest request){
return " 編碼:" + compayCode;
}
}
我通過(guò)Nacos-server的控制臺(tái)進(jìn)行配置的修改拣播,客戶端服務(wù)nacos-config也相應(yīng)的進(jìn)行熱更新晾咪,并不需要重新啟動(dòng)服務(wù)。