spring-cloud-starter-alibaba-nacos-config 启动配置管理

文章目录

nacos spring-cloud 参考地址: https://nacos.io/zh-cn/docs/quick-start-spring-cloud.html
Spring Cloud Alibaba Nacos Config 参考地址: https://github.com/alibaba/spring-cloud-alibaba/wiki/Nacos-config

版本对应说明https://github.com/alibaba/spring-cloud-alibaba/wiki/版本说明

一、dataId 的完整格式

在 Nacos Spring Cloud 中,dataId 的完整格式如下:

${prefix}-${spring.profiles.active}.${file-extension}
  • prefix 默认为 spring.application.name 的值,也可以通过配置项 spring.cloud.nacos.config.prefix来配置。
  • 当 spring.profiles.active 为空时,对应的连接符 - 也将不存在,dataId 的拼接格式变成${prefix}.${file-extension}
  • file-exetension 为配置内容的数据格式,可以通过配置项 spring.cloud.nacos.config.file-extension 来配置。目前只支持 properties 和 yaml 类型。
    在这里插入图片描述

spring-cloud-starter-alibaba-nacos-config 查找文件为 Data Id 以及配置格式

二、支持自定义扩展的 Data Id 配置

extension-configs

# 多文件配置
shared-configs: [ spring-cloud-config-student.yaml,nacos-config.yaml ]

# 单文件配置, Data Id 指定分组组,设置动态刷新
spring.cloud.nacos.config.extension-configs[2].data-id=nacos-config.yaml
spring.cloud.nacos.config.extension-configs[2].group=REFRESH_GROUP
spring.cloud.nacos.config.extension-configs[2].refresh=true

shared-configs

# 多文件配置
extension-configs: [ spring-cloud-config-student.yaml,nacos-config.yaml ]

# 单文件配置, Data Id 指定分组组,设置动态刷新
spring.cloud.nacos.config.shared-configs[0].data-id=nacos-config.yaml
spring.cloud.nacos.config.shared-configs[0].group=GROUP_APP1
spring.cloud.nacos.config.shared-configs[0].refresh=true
三、测试配置
1、添加 maven 依赖

和 springboot 版本对应关系参考 https://github.com/alibaba/spring-cloud-alibaba/wiki/版本说明

        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
            <version>2.2.7.RELEASE</version>
        </dependency>
2、config 示例配置
server:
  port: 20002
spring:
  application:
    name: SPRING_CLOUD_SERVICE_CONFIG
  cloud:
    nacos:
      config:
        server-addr: 42.193.0.90:8848
        username: nacos
        password: nacos
        file-extension: yaml
        namespace: 2022-4-1-prod
        group: DEFAULT_GROUP
        refresh-enabled: true
        # prefix: nacos-config.yaml

        # extension-configs 和 shared-configs 下面这种写法不支持动态刷新(Data Id 在默认的组 DEFAULT_GROUP,默认不支持配置的动态刷新)
        # extension-configs: [ spring-cloud-config-student.yaml,nacos-config.yaml ]
        # shared-configs: [ spring-cloud-config-student.yaml,nacos-config.yaml ]
        extension-configs:
          - data-id: nacos-config.yaml
            group: DEFAULT_GROUP
            refresh: true
          - data-id: spring-cloud-config-student.yaml
            group: DEFAULT_GROUP
            refresh: true
3、Nacos 的控制台新增配置

spring-cloud-config-student.yaml 配置

student:
  address: 陕西-西安-新城区-尚德路-油泼面
  birthday: 2022-4-1
  password: 123456
  username: root

nacos-config.yaml 配置

user:
  age: 90
  name: spring-cloud-nacos-config-properties
4、注入实体类
@Data
@AllArgsConstructor
@NoArgsConstructor
@Component
@RefreshScope
public class Student {
    @Value("${student.username:admin}")
    private String username;
    @Value("${student.password:123456}")
    private String password;
    @Value("${student.address:shanghai}")
    private String address;
    @Value("${student.birthday:2022-02-22}")
    private String birthday;
}
5、调用接口
@RestController
@RequestMapping("/config")
@RefreshScope
public class ConfigController {
    @Autowired
    private Student student;

    @GetMapping("/student")
    public String getStudent() {
        return JSONObject.toJSONString(student);
    }
}
6、测试结果

http://127.0.0.1:20002/config/student 结果如下
在这里插入图片描述

四、配置的优先级

Spring Cloud Alibaba Nacos Config 目前提供了三种配置能力从 Nacos 拉取相关的配置。

其中 n 的值越大,优先级越高。

spring.cloud.nacos.config.extension-configs[n].data-id 的值必须带文件扩展名,文件扩展名支持 properties/yaml/yml。 此时 spring.cloud.nacos.config.file-extension 的配置对自定义扩展配置的 Data Id 文件扩展名没有影响。

  • A: 通过 spring.cloud.nacos.config.shared-configs[n].data-id 支持多个共享 Data Id 的配置

  • B: 通过 spring.cloud.nacos.config.extension-configs[n].data-id 的方式支持多个扩展 Data Id 的配置

  • C: 通过内部相关规则(应用名、应用名+ Profile )自动生成相关的 Data Id 配置

当三种方式共同使用时,他们的一个优先级关系是:A < B < C

五、完全关闭配置

通过设置 spring.cloud.nacos.config.enabled = false 来完全关闭 Spring Cloud Nacos Config

demo 地址https://gitee.com/LingYunYe/nacos-example-study/tree/master/nacos-springcloud-config-examples/src/main

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值