通過本系列的前篇文章:
在之前文章中我們學習到了
SpringCloud Alibaba
讀取
Nacos Config
内定義的
properties
類型的配置檔案資訊,并且使用
Nacos Console
進行修改配置資訊後可以在應用程式内實時更新。
本章目标
Nacos Config
所支援的配置檔案類型既然有多種,那我們該怎麼配置才能讀取不同的配置類型的内容呢?
快速入門
我們還是先來通過
Nacos Console
來添加本章所使用的配置資訊,要注意配置的字尾名改為
yaml
。
Nacos Server
需要在本地安裝
Nacos Server
才能完成本章的内容講解,具體的安裝步驟通路
Nacos 官方文檔建立配置
配置資訊如下所示:
建立應用
我們在
Nacos Console
已經添加了本章所使用的
Yaml
類型的配置資訊,下面通過
Idea
開發工具建立一個
SpringBoot
項目,并添加
SpringCloud Alibaba
、
SpringCloud
版本的依賴,
pom.xml
配置檔案内容如下所示:
//...
<properties>
<java.version>1.8</java.version>
<spring-cloud.version>Greenwich.RELEASE</spring-cloud.version>
<spring-cloud-alibaba.version>0.2.1.RELEASE</spring-cloud-alibaba.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--alibaba nacos config-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<!--SpringCloud-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!--SpringCloud Alibaba-->
<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>
//...
配置檔案擴充名
在之前講到過預設的配置檔案擴充名為
properties
,既然我們本章是讀取的
yaml
類型的檔案,那肯定需要修改這個配置參數,
application.yml
配置檔案如下所示:
spring:
application:
name: hengboy-spring-cloud
# nacos config
cloud:
nacos:
config:
server-addr: 127.0.0.1:8848
# 配置檔案字尾名為yaml
file-extension: yaml
通過
spring.cloud.nacos.config.file-extension
參數進行修改預設的
Nacos Config
所比對的預設檔案擴充名。
在上面的配置檔案内要注意的時,要與
hengboy-spring-cloud
内添加的配置
Nacos Console
前部分比對,也就是比對:
data-id
hengboy-spring-cloud.yaml
讀取配置
下面我們通過簡單的幾個步驟來讀取我們配置的
yaml
配置内容。
第一步:建立一個配置讀取的
Controller
建立一個名為
ConfigController
的配置查詢控制器,并且類上配置
@RequestMapping("/config")
第二步:通過@Value注解讀取配置資訊
我們在之前章節通過
applicationContext#getEnvironment#getProperty
方法可以直接擷取對應的
Nacos Config
的配置資訊,當然
SpringCloud Alibaba
也同樣支援通過
@Value
注解來擷取配置資訊,如下所示:
@RestController
@RequestMapping(value = "/config")
@RefreshScope
public class ConfigController {
/**
* 讀取hengboy.name配置資訊
*/
@Value(value = "${hengboy.name:}")
private String userName;
/**
* 讀取hengboy.age配置資訊
*/
@Value(value = "${hengboy.age:}")
private String userAge;
/**
* 擷取配置内容
*
* @return
*/
@RequestMapping(value = "/get")
public String getConfig() {
return userName + ":" + userAge;
}
}
解釋:表示需要從全局的配置内容中讀取
${hengboy.name:}
的配置資訊,如果沒有找到則使用
hengboy.name
後的内容,當然這裡我們沒有添加任何的預設值,如果沒有配置則為
冒号(:)
空字元串
第三步:通過@RefreshScope注解實時重新整理配置資訊
ConfigController
控制器上添加了注解
@RefreshScope
主要目的是來實時同步通過
Nacos Console
修改的配置内容。
@RefreshScope
注解是
SpringCloud
内部提供,用于
配置熱加載
第四步:運作測試
啟動應用程式,我們通過
curl http://localhost:8080/config/get
可以擷取我們在
Nacos Console
添加的配置内容:
admin:25
第五步:實時更新測試
Nacos Console
我們修改下兩個參數的内容并且
重新釋出配置資訊
:
hengboy.name : admin -> admin-change-after
hegnboy.age : 25 -> 30
再次通過
curl http://localhost:8080/config/get
指令通路,我們已經可以得到更新後的配置内容:
admin-change-after:30
代碼示例
本章代碼在源碼的名稱為:
spring-cloud-alibaba-nacos-config-yaml
,在
SpringCloud-Alibaba/Nacos-Config
目錄下。
- Github: https://github.com/hengboy/spring-cloud-chapter
- Gitee: https://gitee.com/hengboy/spring-cloud-chapter
開源資訊
-
MicroJob
micro-job是一款分布式任務排程執行架構,用于叢集環境負載均衡條件下的任務分發以及任務消費
任務消費者節點定義任務 & 任務自動上報
任務排程器自動根據負載均衡政策來選擇不同的消費者節點進行任務消費
[點選檢視MicroJob官方文檔](http://job.yuqiyu.com/#/)