• 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}
    
    • 1
    • 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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    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
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    三、测试配置

    1、添加 maven 依赖

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

            
                com.alibaba.cloud
                spring-cloud-starter-alibaba-nacos-config
                2.2.7.RELEASE
            
    
    • 1
    • 2
    • 3
    • 4
    • 5
    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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    3、Nacos 的控制台新增配置

    spring-cloud-config-student.yaml 配置

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

    nacos-config.yaml 配置

    user:
      age: 90
      name: spring-cloud-nacos-config-properties
    
    • 1
    • 2
    • 3
    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;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    5、调用接口
    @RestController
    @RequestMapping("/config")
    @RefreshScope
    public class ConfigController {
        @Autowired
        private Student student;
    
        @GetMapping("/student")
        public String getStudent() {
            return JSONObject.toJSONString(student);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    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

    先自我介绍一下,小编13年上师交大毕业,曾经在小公司待过,去过华为OPPO等大厂,18年进入阿里,直到现在。深知大多数初中级java工程师,想要升技能,往往是需要自己摸索成长或是报班学习,但对于培训机构动则近万元的学费,着实压力不小。自己不成体系的自学效率很低又漫长,而且容易碰到天花板技术停止不前。因此我收集了一份《java开发全套学习资料》送给大家,初衷也很简单,就是希望帮助到想自学又不知道该从何学起的朋友,同时减轻大家的负担。添加下方名片,即可获取全套学习资料哦

  • 相关阅读:
    深入理解强化学习——序列决策(Sequential Decision Making)
    C++STL面试详解
    【C++】Windows端VS code中运行CMake工程(手把手教学)
    k8s-10 cni 网络
    侧边栏Drawer栏刷新
    Java设计模式之访问者模式
    素问·风论原文
    Helm扩展
    npm run dev和npm run serve
    GBase 8c使用DML更新和插入表数据(二)
  • 原文地址:https://blog.csdn.net/bsegebr/article/details/126114190