上一篇我們講了Nacos作為服務(wù)注冊中心的用法闷盔,這一篇我們講Nacos另一個功能——配置中心劲弦。
人狠話不多倍宾,直接上代碼雏节。
直接改造 sca 主模塊的pom,添加配置中心的依賴
<!-- SpringCloud Alibaba 服務(wù)配置中心 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
<version>0.2.2.RELEASE</version>
</dependency>
<!-- nacos discovery -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
把 sca-rest-normal 的 application.yml 的文件名改為 bootstrap.yml高职,這是由spring boot的加載屬性文件的優(yōu)先級決定的钩乍,想要在加載屬性之前去config server上取配置文件,那NacosConfig或SpringCloudConfig相關(guān)配置就是需要最先加載的怔锌,而bootstrap配置的加載是先于application配置的寥粹,所以config client要配置config的相關(guān)配置就只能寫到bootstrap配置里了。
其內(nèi)容如下:
spring:
application:
name: normal-rest
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848
config:
server-addr: 127.0.0.1:8848
file-extension: yaml
profiles:
active: dev
這里我沒有配置項目端口號埃元,所以默認啟動肯定是8080涝涤,但是我們會在配置中心配置端口號,以便用來檢驗配置中心是否成功岛杀。
進入Nacos管理頁面阔拳,選擇左側(cè)的配置列表,然后新建一個配置
這里的 Data ID 命名規(guī)則需要注意:
Data ID = ${prefix}-${spring.profile.active}.${file-extension}
其中类嗤,prefix 默認為 spring.application.name 的值糊肠,也可以通過配置項 spring.cloud.nacos.config.prefix來配置辨宠。
spring.profile.active 即為當(dāng)前環(huán)境對應(yīng)的 profile,詳情可以參考 Spring Boot文檔货裹。當(dāng) spring.profile.active 為空時嗤形,對應(yīng)的連接符 - 也將不存在,dataId 的拼接格式變成 ${prefix}.${file-extension}弧圆。
file-exetension 為配置內(nèi)容的數(shù)據(jù)格式派殷,可以通過配置項 spring.cloud.nacos.config.file-extension 來配置。目前只支持 properties 和 yaml 類型墓阀。
配置好之后點擊發(fā)布毡惜,然后我的配置列表就多了一條配置信息
改造OrderRest類
package com.ldh.sca.rest.normal;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@Slf4j
@RestController
@RequestMapping("order")
@RefreshScope
public class OrderRest {
@Value("${ldh.name}")
private String name;
@GetMapping("/getName")
public String createOrder() {
System.out.println(name);
return name;
}
@RequestMapping("/createOrder")
public String createOrder() {
System.out.println("創(chuàng)建訂單");
return null;
}
}
啟動項目,然后訪問 http://localhost:8889/order/getName斯撮,如果訪問成功经伙,并且返回配置中心配置的name值,那么勿锅,Nacos配置中心就生效了