Nacos具有配置管理的功能,在Spring Cloud中可以用作配置中心,代替Spring Cloud Config組件,下面我們聊一下Nacos如何和Spring Cloud集成配置中心。
創(chuàng)建一個(gè)項(xiàng)目:nacos-config
<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.6.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.springcloud</groupId> <artifactId>nacos-config</artifactId> <version>0.0.1-SNAPSHOT</version> <name>nacos-config</name> <description>Demo project for Spring Boot</description> <properties> <java.version>1.8</java.version> </properties> <dependencies> <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-config</artifactId> <version>0.9.0.RELEASE</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build></project>
主要引入spring-cloud-starter-alibaba-nacos-config,為開(kāi)啟nacos配置中心
更多版本對(duì)應(yīng)關(guān)系請(qǐng)參考:《Spring Cloud Alibaba | Nacos服務(wù)中心初探》。
spring.cloud.nacos.config.server-addr=127.0.0.1:8848spring.application.name=spring-cloud-nacos-config
說(shuō)明:之所以需要配置 spring.application.name ,是因?yàn)樗菢?gòu)成 Nacos 配置管理 dataId字段的一部分。
在 Nacos Spring Cloud 中,dataId 的完整格式如下:
${prefix}-${spring.profile.active}.${file-extension}
prefix
默認(rèn)為 spring.application.name
的值,也可以通過(guò)配置項(xiàng) spring.cloud.nacos.config.prefix
來(lái)配置。
spring.profile.active
即為當(dāng)前環(huán)境對(duì)應(yīng)的 profile
,詳情可以參考 Spring Boot
文檔。 注意:當(dāng) spring.profile.active
為空時(shí),對(duì)應(yīng)的連接符 - 也將不存在,dataId
的拼接格式變成 ${prefix}.${file-extension}
file-exetension
為配置內(nèi)容的數(shù)據(jù)格式,可以通過(guò)配置項(xiàng) spring.cloud.nacos.config.file-extension
來(lái)配置。目前只支持 properties
和 yaml
類型。
@RefreshScope
實(shí)現(xiàn)配置自動(dòng)更新:package com.springcloud.nacosconfig.controller;import org.springframework.beans.factory.annotation.Value;import org.springframework.cloud.context.config.annotation.RefreshScope;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;/** * Created with IntelliJ IDEA. * * @Date: 2019/7/14 * @Time: 18:13 * @email: inwsy@hotmail.com * Description: */@RestController@RequestMapping("/config")@RefreshScopepublic class ConfigController { @Value("${useLocalCache:false}") private boolean useLocalCache; @RequestMapping("/get") public boolean get() { return useLocalCache; }}
首先通過(guò)調(diào)用 Nacos Open API
向 Nacos Server
發(fā)布配置:dataId 為example.properties
,內(nèi)容為useLocalCache=true
curl -X POST "http://127.0.0.1:8848/nacos/v1/cs/configs?dataId=spring-cloud-nacos-config.properties&group=DEFAULT_GROUP&content=useLocalCache=false"
運(yùn)行 NacosConfigApplication
,調(diào)用 curl http://localhost:8080/config/get
,返回內(nèi)容是 true
。
再次調(diào)用 Nacos Open API
向 Nacos server
發(fā)布配置:dataId 為example.properties
,內(nèi)容為useLocalCache=false
curl -X POST "http://127.0.0.1:8848/nacos/v1/cs/configs?dataId=spring-cloud-nacos-config.properties&group=DEFAULT_GROUP&content=useLocalCache=true"
再次訪問(wèn) http://localhost:8080/config/get
,此時(shí)返回內(nèi)容為false
,說(shuō)明程序中的useLocalCache
值已經(jīng)被動(dòng)態(tài)更新了。
至此,Nacos配置管理已經(jīng)介紹完成。
聯(lián)系客服