• 4. 微服务之Nacos配置管理


    4.1 Nacos配置管理的目的

    在这里插入图片描述

    可用于对各个服务进行统一配置,并且可以通过修改配置信息来进行服务更新,而不用重启服务

    4.2 Nacos控制台添加配置文件

    进入配置列表添加文件

    在这里插入图片描述

    配置信息

    在这里插入图片描述

    配置文件的Data ID:[服务名称]-[环境].[后缀名] (取名要规范,要不然获取不到该文件)
    格式:目前支持 yaml 和 properties

    4.3 微服务配置拉取

    配置获取步骤:

    在这里插入图片描述

    在项目启动时,bootstrap.yml 优先级大于 application.yml,所以可以将 nacos 相关配置信息放入 bootstrap.yml 中用于先读取 nacos中的配置文件

    1. 在 pom.xml 中引入 Nacos 的配置管理客户端依赖

      <dependency>
          <groupId>com.alibaba.cloudgroupId>
          <artifactId>spring-cloud-starter-alibaba-nacos-configartifactId>
      dependency>
      
      • 1
      • 2
      • 3
      • 4
    2. 在 resource 目录添加 bootstrap.yml 文件,进行配置,其优先级高于 application.yml 文件

      spring:
        application:
          name: user_service # 服务名称
        profiles:
          active: dev # 开发环境
        cloud:
          nacos:
            # nacos 地址
            server-addr: localhost:8848
            config:
              file-extension: yaml # 文件后缀名
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11

      可以看到,其 服务名称、开发环境、文件后缀名 是要与Nacos控制台中配置文件名 [服务名称]-[环境].[后缀名] 进行对应的

    3. 通过 @Value("${xxx.xxx}") 从配置文件读取值

    4.4 微服务热更新

    Nacos 中的配置文件变更后,微服务无需重启就可以感知

    方式一:

    在 @Value 注入的变量所在类上添加注解 @RefreshScope 实时刷新

    @Slf4j
    @RestController
    @RequestMapping("/user")
    @RefreshScope
    public class UserController {
        @Value("${pattern.name}")
        private String name;
    
        @GetMapping("/cfg")
        public String showCfg() {
            return name;
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    方式二(推荐):

    创建一个该属性的类进行属性封装,使用 @ConfigurationProperties 注解自动装配属性

    @Component
    @Data
    @ConfigurationProperties(prefix = "pattern") // 前缀对应的是Nacos配置文件中首字段
    public class PatternProperties {
        private String name;
        private String age;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    4.5 多环境配置共享

    微服务启动时,会从nacos读取多个配置文件:

    • [服务名称]-[环境].[后缀名],例如:userservice-dev.yaml
    • [服务名称].[后缀名],例如:userservice.yaml

    无论环境如何变化,[服务名称].[后缀名] 这个文件一定会加载,因此多环境共享配置可以写入这个文件

    在这里插入图片描述

    多个配置文件属性重复问题:

    当 本地配置文件属性 与 nacos 配置文件中 [服务名称]-[环境].[后缀名],[服务名称].[后缀名] 属性重复时,遵循的优先级为:

    [服务名称]-[环境].[后缀名] > [服务名称].[后缀名] > 本地配置

    即 远端配置 高于 本地配置
    在远端配置中,附有环境配置 高于 共享配置

  • 相关阅读:
    Ubuntu离线安装Python第三方库
    【allegro 17.4软件操作保姆级教程六】布线操作基础之一
    零数科技入选《2022中国数字藏品行业研究报告》推荐厂商
    java里面List<Object>转map,List<String>
    Unity 下载Zip压缩文件并且解压缩
    SpringBoot测试类
    ceph 原理
    2023年数维杯国际赛B题实现代码
    Debezium系列之:2.0.0.Beta1的重大变化和新特性
    IPWorks Encrypt Delphi强加密的一整套组件
  • 原文地址:https://blog.csdn.net/qq_46656580/article/details/127821673