微服务之Nacos配置管理_nacos md5 微服务配置
文章目录
- 前言
- 一、统一配置管理Nacos操作
- 二、统一配置管理java操作
-
- 1.引入依赖
- 2.创建配置文件
- 3.测试
- 4.总结
- 三、Nacos配置自动更新
-
- 1.添加注解@RefreshScope
- 2.使用@ConfigurationProperties注解
- 3.总结
- 四、Nacos多环境配置共享
-
- 1.配置文件
- 2.多种配置的优先级
- 3.总结
- 总结
前言
一、统一配置管理Nacos操作
二、统一配置管理java操作
1.引入依赖
2.创建配置文件
3.测试
4.总结
三、Nacos配置自动更新
1.添加注解@RefreshScope
2.使用@ConfigurationProperties注解
3.总结
四、Nacos多环境配置共享
1.配置文件
2.多种配置的优先级
3.总结
一、统一配置管理Nacos操作
在Nacos中添加配置信息:
在弹出表单中填写配置信息:
配置获取的步骤如下:
二、统一配置管理java操作
1.引入依赖
引入Nacos的配置管理客户端依赖:
<!--nacos的配置管理依赖--> com.alibaba.cloud spring-cloud-starter-alibaba-nacos-config
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 #文件后缀名
注意!!!
SpringCloud 2.4版本之后不再优先读取bootstrap文件,这问题折磨我一天,一直读取不到bootstrap.yml文件,
解决办法:
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-bootstrap</artifactId> <version>3.0.2</version></dependency>
导入依赖就可以了。
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 { @Autowired private 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\")@RefreshScopepublic class UserController { @Autowired private 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\")//@RefreshScopepublic class UserController { @Autowired private UserService userService;// @Value(\"${pattern.dateformat}\")// private String dateformat; @Autowired private 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.总结
总结
以上就是微服务之Nacos配置管理的相关知识,希望对你有所帮助。
积跬步以至千里,积怠惰以至深渊。时代在这跟着你一起努力哦!