版本

  1. springboot版本:2.1.6.RELEASE
  2. nacos版本Nacos 1.1.0

创建一个springboot项目

快速开始

  1. pom引用
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
            <version>0.9.0.RELEASE</version>
        </dependency>
  1. yml配置

修改配置名称: bootstrap.yml
添加配置信息

spring:
  application:
    name: nacos-config
  cloud:
    nacos:
      config:
        server-addr: 127.0.0.1:8848
        # 如果是 .properties文件 不需要这个配置
        file-extension: yaml 
server:
  port: 8080
  1. 代码
@RestController
@RefreshScope
public class SampleController {
    @Value("${user.name:null}")
    String userName;

    @Value("${user.age:25}")
    int age;

    @Value("${current.env:null}")
    String current;

    @GetMapping("/user")
    public String simple() {
        return "Hello Nacos Config!" + "Hello " + userName + " " + age + "!" + "current:" + current;
    }
}
  1. 在nacos页面添加配置

dataID
在 Nacos Config Starter 中,dataId 的拼接格式如下

${prefix} - ${spring.profiles.active} . ${file-extension}

prefix 默认为 spring.application.name 的值,也可以通过配置项 spring.cloud.nacos.config.prefix来配置。

spring.profiles.active 即为当前环境对应的 profile,详情可以参考 Spring Boot文档

注意,当 activeprofile 为空时,对应的连接符 - 也将不存在,dataId 的拼接格式变成 ${prefix}.${file-extension}

file-extension 为配置内容的数据格式,可以通过配置项 spring.cloud.nacos.config.file-extension来配置。 目前只支持 properties 类型。

group
group 默认为 DEFAULT_GROUP,可以通过 spring.cloud.nacos.config.group 配置。

Data ID: nacos-config.yaml (这里与yml配置spring: application: name: nacos-config 保持一致)
Group: DEFAULT_GROUP
配置内容&配置格式: YAML
user:
  name: jeker
  age: 12
  1. 测试接口 http://localhost:8080/user
推荐给类添加 @RefreshScope 或 @ConfigurationProperties 注解,可以编辑nacos-config.yaml 配置值,支持配置的动态更新

返回

Hello Nacos Config!Hello jeker 12!current:null

支持profile粒度的配置

spring-cloud-starter-alibaba-nacos-config 在加载配置的时候,不仅仅加载了以 dataid 为 ${spring.application.name}.${file-extension:properties} 为前缀的基础配置,还加载了dataid为 ${spring.application.name}-${profile}.${file-extension:properties} 的基础配置。在日常开发中如果遇到多套环境下的不同配置,可以通过Spring 提供的 ${spring.profiles.active} 这个配置项来配置。

spring.profiles.active=develop
Note${spring.profiles.active} 当通过配置文件来指定时必须放在 bootstrap.yml 文件中。

新增一个2 dataid,分别为:nacos-config-develop.yaml,nacos-config-product.yaml
内容分别为
a.

current:
  env: develop-env
user:
  name: develop
  age: 92
  

b.

current:
  env: product-env
user:
  name: product
  age: 92

分别设置配置spring.profiles.active=develop和spring.profiles.active=product然后启动项目,来测试接口返回值http://localhost:8080/user

多个应用间配置共享的 Data Id

可以通过以下的方式来配置:

spring.cloud.nacos.config.shared-dataids=bootstrap-common.properties,all-common.properties

More

更多配置项

配置项key默认值说明
服务端地址spring.cloud.nacos.config.server-addr
DataId前缀spring.cloud.nacos.config.prefix spring.application.name
Groupspring.cloud.nacos.config.groupDEFAULT_GROUP
dataID后缀及内容文件格式spring.cloud.nacos.config.file-extensionpropertiesdataId的后缀,同时也是配置内容的文件格式,目前只支持 properties
配置内容的编码方式spring.cloud.nacos.config.encodeUTF-8配置的编码
获取配置的超时时间spring.cloud.nacos.config.timeout3000单位为 ms
配置的命名空间spring.cloud.nacos.config.namespace 常用场景之一是不同环境的配置的区分隔离,例如开发测试环境和生产环境的资源隔离等。
AccessKeyspring.cloud.nacos.config.access-key
SecretKeyspring.cloud.nacos.config.secret-key
相对路径spring.cloud.nacos.config.context-path 服务端 API 的相对路径
接入点spring.cloud.nacos.config.endpointUTF-8地域的某个服务的入口域名,通过此域名可以动态地拿到服务端地址
是否开启监听和自动刷新spring.cloud.nacos.config.refresh.enabledtrue

代码
个人站点

reference

Spring Cloud Alibaba Nacos Config

Nacos Config Example

Last modification:February 13th, 2020 at 03:57 pm
如果觉得我的文章对你有用,请随意赞赏