• Nacos配置管理


    1.配置管理
    • Nacos除了可以做注册中心,同样可以做配置管理来使用。可以集中管理所有实例的配置。Nacos一方面可以将配置集中管理,另一方可以在配置变更时,及时通知微服务,实现配置的热更新。
    1. 在nacos中添加配置文件

    在这里插入图片描述

    1. 填写配置信息
      • 项目的核心配置,需要热更新的配置才有放到nacos管理的必要。基本不会变更的一些配置还是保存在微服务本地比较好。

    在这里插入图片描述

    1. 引入nacos-config依赖,在user-service服务中,引入nacos-config的客户端依赖
            
            
                com.alibaba.cloud
                spring-cloud-starter-alibaba-nacos-config
            
    
    • 1
    • 2
    • 3
    • 4
    • 5
    1. 添加bootstrap.yml,在user-service中添加一个bootstrap.yml文件
    spring:
      application:
        name: user-service # 服务名称
      profiles:
        active: dev #开发环境,这里是dev
      cloud:
        nacos:
          server-addr: localhost:8848 # Nacos地址
          config:
            file-extension: yaml # 文件后缀名
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    在这里插入图片描述

    1. 检测是否成功读取nacos配置文件

      1. 在user-service中的UserController中添加业务逻辑,读取pattern.dateformat配置
      @Slf4j
      @RestController
      @RequestMapping("/user")
      public class UserController {
      
          @Autowired
          private UserService userService;
      
          @Value("${pattern.dateformat}")
          private String dateformat;
      
          @GetMapping("/now")
          public String now(){
              return LocalDateTime.now().format(DateTimeFormatter.ofPattern(dateformat));
          }
      }
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
      1. 页面访问,查看结果

      在这里插入图片描述

      1. 配置获取的步骤

    在这里插入图片描述

    2.配置热更新
    • 修改nacos中的配置后,微服务中无需重启即可让配置生效

    • 实现配置热更新,可以使用两种方式

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

        在这里插入图片描述

      • 使用@ConfigurationProperties注解代替@Value注解

      1. 在user-service服务中,添加一个类,读取patterrn.dateformat属性
      @Data
      @Component
      @ConfigurationProperties(prefix = "pattern")
      public class PatternProperties{
        private String dateformat;
      }
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      1. 在UserController中使用这个类代替@Value
      @Slf4j
      @RestController
      @RequestMapping("/user")
      public class UserController {
      
         @Autowired
         private UserService userService;
      
         @Autowired
         private PatternProperties patternProperties;
      
         @GetMapping("/now")
         public String now(){
             return LocalDateTime.now().format(DateTimeFormatter.ofPattern(patternProperties.getDateformat()));
         }
      }
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
    3.配置共享
    • 环境不同,都能读取到共享配置的属性值。

    • 配置共享的优先级

    在这里插入图片描述

    1. 添加一个环境共享配置,在nacos中添加一个user-service.yaml文件:

    在这里插入图片描述

    1. 在user-service中读取共享配置,在user-service服务中,修改PatternProperties类,读取新添加的属性
    @Data
    @Component
    @ConfigurationProperties(prefix = "pattern")
    public class PatternProperties{
        private String dateformat;
        private String enShareValue;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    1. 在user-service服务中,修改UserController,添加一个方法
        @GetMapping("/porp")
        public PatternProperties patternProperties(){
            return patternProperties;
        }
    
    • 1
    • 2
    • 3
    • 4
    1. 运行两个UserApplication,使用不同的环境,修改UserApplication2这个启动项,改变其profile值,UserApplication(8081)使用的profile是dev,UserApplication2(8082)使用的profile是test

    在这里插入图片描述

    1. 启动UserApplication和UserApplication2,

      • 访问http://localhost:8081/user/porp

      在这里插入图片描述

      • 访问http://localhost:8082/user/porp

    在这里插入图片描述

  • 相关阅读:
    迪拜之行回顾:CESS 的 DePIN 创新之旅
    free(): double free detected in tcache 2
    论文阅读之《Color Constancy Using CNNs》
    如何将带GPS的网络化的软件定义无线电接收机应用于分布式和移动频谱监测?(一)
    【Nginx】Windows平台下配置Nginx服务实现负载均衡
    题目 1971: 外出旅游
    排序之快速排序
    海康威视热成像实时测温java - 23版
    java内部类详解
    代码重构的一些理由
  • 原文地址:https://blog.csdn.net/m0_59564754/article/details/133311024