当前位置: 首页 > news >正文

微服务之Nacos配置管理

文章目录

  • 一、统一配置管理Nacos操作
  • 二、统一配置管理java操作
    • 1.引入依赖
    • 2.创建配置文件
    • 3.测试
    • 4.总结
  • 三、Nacos配置自动更新
    • 1.添加注解@RefreshScope
    • 2.使用@ConfigurationProperties注解
    • 3.总结
  • 四、Nacos多环境配置共享
    • 1.配置文件
    • 2.多种配置的优先级
    • 3.总结


一、统一配置管理Nacos操作

在这里插入图片描述在Nacos中添加配置信息:
在这里插入图片描述
在弹出表单中填写配置信息:
在这里插入图片描述
配置获取的步骤如下:
在这里插入图片描述


二、统一配置管理java操作

1.引入依赖

引入Nacos的配置管理客户端依赖:

        <!--nacos的配置管理依赖--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId></dependency>

2.创建配置文件

在user-service(客户端服务提供者)中的resource目录添加一个bootstrap.yml文件,这个文件是引导文件,优先级高于application.yml:

spring:application:name: userservice #服务名称profiles:active: dev #环境cloud:nacos:server-addr: localhost:8848 #nacos地址config:file-extension: yaml #文件后缀名

3.测试

我们在user-service(客户端服务提供者)中将pattern.dateformat这个属性注入到UserController中做测试:
完整代码:

package cn.itcast.user.web;import cn.itcast.user.pojo.User;
import cn.itcast.user.service.UserService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.*;import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;@Slf4j
@RestController
@RequestMapping("/user")
public class UserController {@Autowiredprivate UserService userService;@Value("${pattern.dateformat}")private String dateformat;@GetMapping("now")public String now(){return LocalDateTime.now().format(DateTimeFormatter.ofPattern(dateformat));}// ...略
}

结果如下:
在这里插入图片描述

4.总结

在这里插入图片描述

三、Nacos配置自动更新

Nacos中的配置文件变更后,微服务无需重启就可以感知。不过需要通过下面两种配置实现:

1.添加注解@RefreshScope

在这里插入图片描述
完整代码如下:

package cn.itcast.user.web;import cn.itcast.user.pojo.User;
import cn.itcast.user.service.UserService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.*;import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;@Slf4j
@RestController
@RequestMapping("/user")
@RefreshScope
public class UserController {@Autowiredprivate UserService userService;@Value("${pattern.dateformat}")private String dateformat;@GetMapping("now")public String now(){return LocalDateTime.now().format(DateTimeFormatter.ofPattern(dateformat));}/*** 路径: /user/110** @param id 用户id* @return 用户*/@GetMapping("/{id}")public User queryById(@PathVariable("id") Long id) {return userService.queryById(id);}
}

2.使用@ConfigurationProperties注解

在这里插入图片描述

完整代码如下

package cn.itcast.user.config;import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;@Component
@Data
@ConfigurationProperties(prefix = "pattern")
public class PatternProperties {private String dateformat;
}

UserController.java

package cn.itcast.user.web;import cn.itcast.user.config.PatternProperties;
import cn.itcast.user.pojo.User;
import cn.itcast.user.service.UserService;
import lombok.extern.slf4j.Slf4j;
import org.checkerframework.checker.units.qual.A;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.*;import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;@Slf4j
@RestController
@RequestMapping("/user")
//@RefreshScope
public class UserController {@Autowiredprivate UserService userService;//    @Value("${pattern.dateformat}")
//    private String dateformat;@Autowiredprivate PatternProperties properties;@GetMapping("now")public String now(){return LocalDateTime.now().format(DateTimeFormatter.ofPattern(properties.getDateformat()));}/*** 路径: /user/110** @param id 用户id* @return 用户*/@GetMapping("/{id}")public User queryById(@PathVariable("id") Long id) {return userService.queryById(id);}
}

3.总结

在这里插入图片描述

四、Nacos多环境配置共享

1.配置文件

其实微服务启动时,会去nacos读取多个配置文件,例如:

  • [spring.application.name]-[spring.profiles.active].yaml,例如:userservice-dev.yaml

  • [spring.application.name].yaml,例如:userservice.yaml

[spring.application.name].yaml不包含环境,因此可以被多个环境共享。

在这里插入图片描述

2.多种配置的优先级

在这里插入图片描述

3.总结

在这里插入图片描述

http://www.lryc.cn/news/221094.html

相关文章:

  • PySpark 优雅的解决依赖包管理
  • UNI-APP_获取手机品牌
  • 新登录接口独立版变现宝升级版知识付费小程序-多领域素材资源知识变现营销系统
  • 「掌握创意,释放想象」——Photoshop 2023,你的无限可能!
  • SQLSugar查询返回DataTable
  • 企业微信开启接收消息+验证URL有效性
  • 电脑访问不到在同网络的手机设备
  • 国内MES系统应用研究报告:“企业MES应用现状”| 百世慧®
  • C++模板元模板实战书籍讲解第一章题目讲解
  • Java在互联网网络安全中的应用(三)
  • VMLogin如何解决跨境电商多账号管理难题?
  • STM32创建工程步骤
  • 软考 系统架构设计师系列知识点之边缘计算(1)
  • vue:写一个数组box和list数组,在保留box数组中原有对象的同时,将list数组中每一个对象插入到box数组后面
  • Python教程:随机函数,开始猜英文单词的游戏
  • Unit2_1:动态规划DP
  • k8s提交spark应用消费kafka数据写入elasticsearch7
  • linux傻瓜式安装Java环境及中间件
  • javascript中的new原理及实现
  • R语言 PPT 预习+复习
  • 轻松实现固定资产智能管理的工具来了
  • 软考高级系统架构设计师系列之:微服务
  • vue + axios + mock
  • Mongoose 开源库--json 使用笔记
  • linux中复制文件如何排除一个目录
  • 时空智友企业信息管理系统任意文件读取漏洞复现
  • YOLOv8优化:block系列篇 | Neck系列篇 |可重参化EfficientRepBiPAN优化Neck
  • 零代码编程:用ChatGPT批量提取flash动画swf文件中的mp3
  • 2023数学建模国赛C题赛后总结
  • hiveSQL语法及练习题整理(mysql)