• springCloud学习-nacos配置管理-配置与拉取、配置热更新、多环境配置、多服务配置共享


    写在前面

    nacos中提供了配置管理功能,能有效的让我在开发中对项目的配置文件进行管理,如我们在开发中测试环境、开发环境经常会分开,我们总不至于每次打不同环境的包时,改不同环境的配置文件。

    在这里插入图片描述

    1.配置管理

    nacos的配置管理同样提供环境隔离功能、所以我们可以在配置管理中可以建立不同的namespace来管理部同环境的配置文件。

    1.1配置管理添加

    在这里插入图片描述
    在这里插入图片描述

    2.多环境配置

    2.1在SpringCloud中的多环境配置

    我们知道SpringBoot可以通过文件名来区分配置,如下:

    1. application.yml
    2. application-dev.yml #开发环境
    3. application-test.yml #测试环境
    4. application-prod.yml #正式环境

    但是与SpringBoot不同的是SpringCloud提供了另一种方式bootstrap.yml,bootstrap.yml
    用来程序引导时执行,应用于更加早期配置信息读取,也就是说bootstrap.yml会在application.yml之前被加载,同时bootstrap.yml最经典的应用方式也是在nacos中。

    在这里插入图片描述

    2.2 引入

            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
            </dependency>
    
    • 1
    • 2
    • 3
    • 4

    2.3 bootstrap.yml配置

    spring:
      application:
        name: older-service
      profiles:
        active: dev
      cloud:
        nacos:
          config:
            #nacos配置管理地址
            server-addr: localhost:8848
            #配置文件后缀名
            file-extension: yaml
            #配置文件前缀名不写默认为application.name
            prefix: older-service
            #分组
            group: cloud-demo
          discovery:
            #nacos服务管理地址
            server-addr: localhost:8848
            #集群
            cluster-name: HZ
            #分组
            group: cloud-demo
    
    ---
    #dev环境
    spring:
      profiles: dev
      cloud:
        nacos:
          config:
            #配置管理命名空间
            namespace: 685f6872-f0d1-44b1-bc07-1422f16ffa3a
          discovery:
            #服务管理命名空间
            namespace: 685f6872-f0d1-44b1-bc07-1422f16ffa3a
    
    ---
    #uat环境
    spring:
      profiles: uat
      cloud:
        nacos:
          config:
            #配置管理命名空间
            namespace: 883573b2-678e-48a5-a56f-89835a5a8657
          discovery:
            #服务管理命名空间
            namespace: 883573b2-678e-48a5-a56f-89835a5a8657
    
    
    
    • 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
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51

    3.配置热更新

    注意nacos中[spring.application.name].yaml以及[spring.application.name]-[spring.profiles.active].yaml支持热更新,共享配置以及扩展配置不支持热更新

    3.1 @RefreshScope与@Value(不建议)

    在@Value注入的变量所在类上添加注解@RefreshScope

    在这里插入图片描述

    3.2 @ConfigurationProperties(建议)

    在这里插入图片描述

    package cn.itcast.order.config;
    
    import lombok.Data;
    import org.springframework.boot.context.properties.ConfigurationProperties;
    import org.springframework.stereotype.Component;
    
    /**
     * @Description
     * @Author weiwenbin
     * @Date 2022/8/15 下午4:09
     */
    @ConfigurationProperties(prefix = "wwb")
    @Component
    @Data
    public class MyProperties {
        private String test;
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    4.多服务配置共享

    4.1nacos中扩展配置与共享配置

    日常开发中,多个模块可能会有很多共用的配置,比如数据库连接信息,Redis 连接信息,RabbitMQ
    连接信息,监控配置等等。那么此时,我们就希望可以加载多个配置,多个项目共享同一个配置之类等功能,Nacos Config 也确实支持。

    Nacos在配置路径spring.cloud.nacos.config.extension-config下,允许我们指定⼀个或多个额外配置。

    Nacos在配置路径spring.cloud.nacos.config.shared-configs下,允许我们指定⼀个或多个共享配置。

    上述两类配置都⽀持三个属性:data-id、group(默认为字符串DEFAULT_GROUP)、refresh(默认为true)。

    4.1.1spring.cloud.nacos.config.shared-configs(建议)

    spring:
      application:
        name: older-service
      profiles:
        active: dev
      cloud:
        nacos:
          config:
            #nacos配置管理地址
            server-addr: localhost:8848
            #配置文件后缀名
            file-extension: yaml
            #配置文件前缀名不写默认为application.name
            prefix: older-service
            #分组
            group: cloud-demo
            #共享文件配置
            shared-configs:
              - dataId: public.yaml
                group: cloud-demo
          discovery:
            #nacos服务管理地址
            server-addr: localhost:8848
            #集群
            cluster-name: HZ
            #分组
            group: cloud-demo
    
    ---
    #dev环境
    spring:
      profiles: dev
      cloud:
        nacos:
          config:
            #配置管理命名空间
            namespace: 685f6872-f0d1-44b1-bc07-1422f16ffa3a
            shared-configs: 
              - dataId:
          discovery:
            #服务管理命名空间
            namespace: 685f6872-f0d1-44b1-bc07-1422f16ffa3a
    
    ---
    #uat环境
    spring:
      profiles: uat
      cloud:
        nacos:
          config:
            #配置管理命名空间
            namespace: 883573b2-678e-48a5-a56f-89835a5a8657
          discovery:
            #服务管理命名空间
            namespace: 883573b2-678e-48a5-a56f-89835a5a8657
    
    
    • 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
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56

    4.1.2spring.cloud.nacos.config.extension-configs(不建议)

    spring:
      application:
        name: older-service
      profiles:
        active: dev
      cloud:
        nacos:
          config:
            #nacos配置管理地址
            server-addr: localhost:8848
            #配置文件后缀名
            file-extension: yaml
            #配置文件前缀名不写默认为application.name
            prefix: older-service
            #分组
            group: cloud-demo
            #共享文件配置
            extension-configs:
              - dataId: public.yaml
                group: cloud-demo
          discovery:
            #nacos服务管理地址
            server-addr: localhost:8848
            #集群
            cluster-name: HZ
            #分组
            group: cloud-demo
    
    ---
    #dev环境
    spring:
      profiles: dev
      cloud:
        nacos:
          config:
            #配置管理命名空间
            namespace: 685f6872-f0d1-44b1-bc07-1422f16ffa3a
            shared-configs: 
              - dataId:
          discovery:
            #服务管理命名空间
            namespace: 685f6872-f0d1-44b1-bc07-1422f16ffa3a
    
    ---
    #uat环境
    spring:
      profiles: uat
      cloud:
        nacos:
          config:
            #配置管理命名空间
            namespace: 883573b2-678e-48a5-a56f-89835a5a8657
          discovery:
            #服务管理命名空间
            namespace: 883573b2-678e-48a5-a56f-89835a5a8657
    
    
    
    • 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
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57

    4.2nacos中配置文件加载顺序以及优先级

    顺序如下

    1. bootstrap.yml
    2. application.yaml
    3. application-[spring.profiles.active].yaml
    4. share-config.yaml
    5. extension-config.yaml
    6. [spring.application.name].yaml
    7. [spring.application.name]-[spring.profiles.active].yaml

    优先级如下

    在这里插入图片描述

  • 相关阅读:
    esRally国内安装使用避坑指南-全网最新
    leetcode 26. 删除有序数组中的重复项(实现unique函数)
    Oracle 2019c安装闪退解决过程
    【Java成王之路】EE初阶第九篇:(网络编程) 3
    沸点 | Ultipa 图数据库金融应用场景优秀案例首批入选,金融街论坛年会发布
    [附源码]计算机毕业设计JAVA博客系统设计
    JavaScript - 手写call、apply和bind函数
    阿里云 MSE 支持 Go 语言流量防护
    食堂点餐小程序,智慧食堂小程序,食堂预约点餐小程序毕设作品
    CMSC5707-高级人工智能之特征表示和压缩
  • 原文地址:https://blog.csdn.net/MyNote1994/article/details/126346597