第四章 Spring Cloud Alibaba Nacos之服務配置中心
文章目錄
- 一、基礎配置
- 二、新建子項目
- 1.pom文件
- 2.YML配置
- 3.啟動類
- 4.業務類
- 5.Nacos配置規則
- 三、Nacos平臺創建配置操作
- 四、自動配置更新
- 五、測試
一、基礎配置
Nacos不僅僅可以作為注冊中心來使用,同時它支持作為配置中心。
二、新建子項目
1.pom文件
這里我們主要要引入的是此依賴。
<dependency> <groupId> com.alibaba.cloud </groupId> <artifactId> spring-cloud-starter-alibaba-nacos-config </artifactId>
</dependency>
這個依賴依據在官網上可以找到:官網依據
2.YML配置
要注意,這里要兩個配置文件,因為Nacos同SpringCloud-config一樣,在項目初始化時,要保證先從配置中心進行配置拉取,拉取配置之后,才能保證項目的正常啟動。
springboot中配置文件的加載是存在優先級順序的,bootstrap優先級高于application。
分別要配置的是,這里bootstrap.yml配置好了以后,作用是兩個,第一個讓8899這個服務注冊到Nacos中,第二個作用就是去Nacos中去讀取指定后綴為yaml的配置文件:
bootstrap.yml
# nacos配置
server:port: 8899spring:application:name: nacos-config-clientcloud:nacos:discovery:server-addr: localhost:8848 #Nacos服務注冊中心地址config:server-addr: localhost:8848 #Nacos作為配置中心地址file-extension: yaml #指定yaml格式的配置
application.yml
spring:profiles:active: dev # 表示開發環境
3.啟動類
package com.cy.cloudalibabaconfig8899;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;@SpringBootApplication
@EnableDiscoveryClient
public class CloudalibabaConfig8899Application {public static void main(String[] args) {SpringApplication.run(CloudalibabaConfig8899Application .class, args);}}
4.業務類
package com.cy.cloudalibabaconfig8899.controller;import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.RestController;@RestController
@RefreshScope //支持Nacos的動態刷新功能
public class ConfigClientController {@Value("${config.info}")private String configInfo;@GetMapping("/config/info")public String getConfigInfo(){return configInfo;}}
這里的@RefreshScope實現配置自動更新,意思為如果想要使配置文件中的配置修改后不用重啟項目即生效,可以使用@RefreshScope配置來實現。
5.Nacos配置規則
在 Nacos Spring Cloud 中,dataId
的完整格式如下(詳情可以參考官網):
${prefix}-${spring.profiles.active}.${file-extension}
prefix
默認為spring.application.name
的值,也可以通過配置項spring.cloud.nacos.config.prefix
來配置。spring.profiles.active
即為當前環境對應的 profile,注意:當spring.profiles.active
為空時,對應的連接符-
也將不存在,dataId 的拼接格式變成${prefix}.${file-extension}
(不能刪除)file-exetension
為配置內容的數據格式,可以通過配置項spring.cloud.nacos.config.file-extension
來配置。目前只支持properties
和yaml
類型。- 通過 Spring Cloud 原生注解
@RefreshScope
實現配置自動更新: - 所以根據官方給出的規則我們最終需要在Nacos配置中心添加的配置文件的名字規則和名字為:
# ${spring.application.name}-${spring.profiles.active}.${file-extension}
# nacos-config-client-dev.yaml
# 微服務名稱-當前環境-文件格式
三、Nacos平臺創建配置操作
增加配置:
config: info: nacos config center,version = 1
然后在配置中心就會看到剛剛發布的配置:
四、自動配置更新
修改Nacos配置,不需要重啟項目即可自動刷新:
修改版本號為2,點擊發布:
五、測試
啟動服務訪問服務來測試(沒有修改之前是1,修改之后不需要重啟項目既可以直接獲取最新配置):http://localhost:8899/config/info