前言
在了解網(wǎng)關(guān)后,知道網(wǎng)關(guān)需要注冊(cè)中心來(lái)監(jiān)控,以及需要統(tǒng)一的配置文件中心,進(jìn)行配置文件管理;
前提
在搭建配置中心時(shí),需要先下載并運(yùn)行Nacos;
搭建時(shí)請(qǐng)嚴(yán)格按照 Nacos 依賴(lài)關(guān)系構(gòu)建項(xiàng)目,不然會(huì)有意想不到的收獲,甚至自閉一段時(shí)間;
下面時(shí)我拷貝的一份依賴(lài)關(guān)系圖:

版本說(shuō)明 · alibaba/spring-cloud-alibaba Wiki
構(gòu)建項(xiàng)目依賴(lài)管理
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
<maven.compiler.plugin.version>3.8.1</maven.compiler.plugin.version>
<hutool.version>5.6.2</hutool.version>
<alibaba.version>2.2.5.RELEASE</alibaba.version>
<spring.boot.vsersion>2.3.2.RELEASE</spring.boot.vsersion>
<spring.cloud.version>Hoxton.SR8</spring.cloud.version>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>${spring.boot.vsersion}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring.cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>${alibaba.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>${hutool.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
以上是搭建nacos-config配置中心需要管理的依賴(lài);
構(gòu)建子模塊
項(xiàng)目關(guān)系

pom.xml 依賴(lài)引入
<dependencies>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
</dependencies>
resource配置
在 resource 目錄下,新建 bootstrap.yml 文件,并寫(xiě)入配置:
spring:
cloud:
nacos:
config:
file-extension: yaml
server-addr: 127.0.0.1:8848
application:
name: nacos-config
啟動(dòng)類(lèi)
@SpringBootApplication
public class NacosConfigApplication {
public static void main(String[] args) {
ConfigurableApplicationContext applicationContext = SpringApplication.run(NacosConfigApplication.class, args);
String useLocalCache= applicationContext.getEnvironment().getProperty("useLocalCache");
System.err.println("useLocalCache :" + useLocalCache+ "<<<<<<");
}
}
此處目的是,打印出 useLocalCache 配置是否從 nacos服務(wù)中的配置管理里面動(dòng)態(tài)獲取到了。
構(gòu)建controller 測(cè)試動(dòng)態(tài)配置
@RestController
@RequestMapping("/config")
@RefreshScope
public class ConfigController {
@Value("${useLocalCache:false}")
private boolean useLocalCache;
@RequestMapping("/get")
public boolean get() {
return useLocalCache;
}
}
@RefreshScope 用來(lái)動(dòng)態(tài)刷新配置的。
測(cè)試步驟
1. 寫(xiě)一個(gè) yaml 配置到 nacos 服務(wù)里面
curl -X POST "http://127.0.0.1:8848/nacos/v1/cs/configs?dataId=example.properties&group=DEFAULT_GROUP&content=useLocalCache: true"
2. 啟動(dòng) nacos-config 項(xiàng)目
GET 請(qǐng)求 http://localhost:8080/config/get:

3. 修改配置并重新查詢(xún)
修改

再次查詢(xún)

總結(jié)
至此,nacos的配置管理就完成的;
說(shuō)一下這里碰到的幾個(gè)坑:
- 版本依賴(lài)問(wèn)題:
一開(kāi)始我選擇的是Spring Cloud 2020.0、Spring Cloud Alibaba 2021.1、Spring Boot 2.4.2.RELEASE,然后發(fā)現(xiàn) Spring Boot 只有 2.4.2 版本,沒(méi)有后綴 RELEASE,然后啟動(dòng)項(xiàng)目后,發(fā)現(xiàn)一直獲取不到nacos上設(shè)置的值,網(wǎng)上百度了一堆,自己也都嘗試了下,發(fā)現(xiàn)都不行,最后就決定給版本降級(jí),事情就解決了,如果有知道原因的小伙伴,可以私聊告訴我,感謝!
- 容易混淆的文件擴(kuò)展:
bootstrap.yml的文件后綴,和 bootstrap.yml 里面配置的
file-extension: yaml,是不同的東西;
file-extension: yaml指的是基于 dataid 為 yaml 的文件擴(kuò)展名配置方式,這個(gè)是nacos服務(wù)里面的配置,是我們動(dòng)態(tài)刷新獲取的配置的格式,不是我們構(gòu)建的項(xiàng)目里的bootstrap.yml。