springboot集成nacos配置管理

官方文档:Nacos Spring Boot 快速开始

个人实践:

Namespace用来区分环境,例如:开发环境、测试环境、生产环境。

Group用来区分不同的应用。

DataId用来区分配置,例如:mysql配置,redis配置,kafka配置。

0、前提:已安装启动nacos。

去控制台创建新的命名空间:

在develop命名空间下,创建新的配置:dataId=mysql,group=yzh-maven

 

1、引入jar包

        <!-- https://mvnrepository.com/artifact/com.alibaba.boot/nacos-config-spring-boot-starter -->
        <dependency>
            <groupId>com.alibaba.boot</groupId>
            <artifactId>nacos-config-spring-boot-starter</artifactId>
            <version>0.2.12</version>
        </dependency>

注意:版本 0.2.x.RELEASE 对应的是 Spring Boot 2.x 版本,版本 0.1.x.RELEASE 对应的是 Spring Boot 1.x 版本。 

2、application.properties配置

## nacos配置
# 开启配置预加载功能
nacos.config.bootstrap.enable=true
nacos.config.server-addr=127.0.0.1:8848
nacos.config.namespace=56705fdc-7fb8-45bc-80aa-f79c7d94baa5
nacos.config.group=yzh-maven
#nacos.config.data-id=mysql
nacos.config.data-ids=mysql,redis
# 配置文件类型
nacos.config.type=properties
# 开启自动刷新
nacos.config.auto-refresh=true

官方配置说明:spring boot 0.2.2 以及 0.1.2版本新功能使用手册 · nacos-group/nacos-spring-boot-project Wiki · GitHub

3、代码使用

@RestController
@RequestMapping("/nacos")
@Slf4j
public class NacosController {

    /**
     * 自动刷新
     */
    @NacosValue(value = "${name}", autoRefreshed = true)
    private String name;

    /**
     * 不会自动刷新
     */
    @Value(value = "${password}")
    private String password;

    @GetMapping("/get")
    public String get() {
        log.info("name={}, password={}", name, password);
        return "name=" + name + ", password=" + password;
    }

}

4、浏览器请求

http://localhost:8180/nacos/get
name=admin, password=123

修改配置后重新请求(name值更新了,password值未更新):
name=admin22, password=123

Open API

Open API 指南

例:发布配置,post请求,

curl -X POST "http://127.0.0.1:8848/nacos/v1/cs/configs?tenant=56705fdc-7fb8-45bc-80aa-f79c7d94baa5&dataId=mysql&group=yzh-maven&content=name=admin2"