莒县网站建设,网推地推,dede网站建站教程,杭州微网站建设公司哪家好#x1f40c;个人主页#xff1a; #x1f40c; 叶落闲庭 #x1f4a8;我的专栏#xff1a;#x1f4a8; c语言 数据结构 javaEE 操作系统 Redis 石可破也#xff0c;而不可夺坚#xff1b;丹可磨也#xff0c;而不可夺赤。 Nacos 一、nacos实现配置管理1.1 统一配置管… 个人主页 叶落闲庭 我的专栏 c语言 数据结构 javaEE 操作系统 Redis 石可破也而不可夺坚丹可磨也而不可夺赤。 Nacos 一、nacos实现配置管理1.1 统一配置管理1.1 nacos完成配置管理 二、微服务配置拉取2.1 引入Nacos的配置管理客户端依赖2.2 在resource目录添加引导文件bootstrap.yml2.3 验证读取nacos中的配置信息 三、实现配置热更新3.1 通过Value注解注入结合RefreshScope3.2 通过ConfigurationProperties注入自动刷新 四、多环境配置4.1 [服务名]-[spring.profile.actie].yaml环境配置4.2 [服务名].yaml多环境共享默认配置4.5 本地配置 一、nacos实现配置管理
1.1 统一配置管理
在微服务搭建中每个微服务中的业务都需要去完成数据库查询并且服务之间还会完成相互调用而要完成相互调用需要将每个服务都注册到服务中心消费者就可以从服务中心完成注册发现实现服务获取和负载均衡完成远程调用随着服务的增多可能会有数十上百上千条这种情况这时就需要对配置文件进行修改这个配置文件可能跟数十上百上千条微服务都有关系这时就需要逐个去修改配置会非常麻烦而且在配置完后还需要对每个服务进行重启而进行统一配置管理后只需要对一个配置文件进行修改即可通过配置管理服务就可以实现在修改完配置文件后不需要重启服务就可以使用配置管理服务是通过在服务启动时先去读取配置管理服务上的配置再和本地的配置进行结合作为完整配置进行使用 1.1 nacos完成配置管理
在nacos中添加配置信息 填写配置信息 发布 二、微服务配置拉取
统一配置完成后在微服务项目启动时就需要对该配置进行拉取即项目启动时要先读取nacos中的配置文件那么就需要获取nacos的地址而nacos的地址在本地配置文件中要想提前知道nacos地址就需要创建一个名为bootstrap.yml的文件这个文件的优先级比本地配置文件properties.yml文件高很多所以将nacos地址的相关配置加在bootstrap.yml中就可以提前加载nacos地址从而访问nacos配置文件了。
2.1 引入Nacos的配置管理客户端依赖
!--nacos的配置管理依赖--
dependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-starter-alibaba-nacos-config/artifactId
/dependency2.2 在resource目录添加引导文件bootstrap.yml
spring:application:name: userservice # 服务名称profiles:active: dev # 开发环境这里是devcloud:nacos:server-addr: localhost:8848 # nacos地址config:file-extension: yaml #文件后缀名2.3 验证读取nacos中的配置信息
nacos的配置信息
pattern:dateformat: yy-MM-dd HH:mm:ss在userservice的Controller中读取当前时间信息通过该配置展现出来
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));}
}三、实现配置热更新
3.1 通过Value注解注入结合RefreshScope
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));}
}3.2 通过ConfigurationProperties注入自动刷新
Data
Component
ConfigurationProperties(prefix pattern)
public class PatternProperties {private String dateformat;
}Slf4j
RestController
RequestMapping(/user)
public class UserController {Autowiredprivate UserService userService;Autowiredprivate PatternProperties patternProperties;GetMapping(now)public String now() {return LocalDateTime.now().format(DateTimeFormatter.ofPattern(patternProperties.getDateformat()));}
}四、多环境配置
4.1 [服务名]-[spring.profile.actie].yaml环境配置
pattern:dateformat: yy/MM/dd HH:mm:ssname: 环境配置dev4.2 [服务名].yaml多环境共享默认配置
pattern:envSharedValue: 环境共享属性值name: 环境共享属性值default4.5 本地配置
pattern:name: 本地环境local优先级[服务名]-[spring.profile.actie].yaml [服务名].yaml 本地配置