微服务框架
【SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈课程|黑马程序员Java微服务】
SpringCloud微服务架构
文章目录
- 微服务框架
- SpringCloud微服务架构
- 6 Nacos 配置管理
- 6.2 微服务配置拉取
- 6.2.1 统一配置管理
- 6.2.2 直接开干
- 6.2.3 总结
6 Nacos 配置管理
6.2 微服务配置拉取
6.2.1 统一配置管理
OK,我们之前已经把部分配置放到了Nacos 中
【我们的微服务如何得到这些配置?】
没使用Nacos 时配置获取的步骤如下:
现在使用了Nacos ,就变成了下面这样儿
看起来很简单,其实在我们读取Nacos 配置文件时,
需要先知道一些信息:
① 去哪儿读?
② 读谁?
现在的问题就是Nacos 地址等信息需要在读取本地配置文件application.yml 之前就得到
这个时候bootstrap.yml 文件来了
这个配置文件的优先级比application.yml 的优先级高很多
6.2.2 直接开干
① 引入Nacos的配置管理客户端依赖
【在user-service 中】
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
② 在userservice中的resource目录添加一个bootstrap.yml文件,这个文件是引导文件,优先级高于application.yml:
bootstrap.yml
spring:
application:
name: userservice
profiles:
active: dev # 环境
cloud:
nacos:
server-addr: localhost:8848 #Nacos地址
config:
file-extension: yaml # 文件后缀名
③ 删除application.yml 配置文件中重复的配置
OK,这样就行了,但是,要证明一下我们真的拉到配置了
直接读它
@Value("${pattern.dateformat}")
private String dateformat;
@GetMapping("now")
public String now(){
return LocalDateTime.now().format(DateTimeFormatter.ofPattern(dateformat));
}
调用这个接口,它就会按照Nacos 配置文件中的格式返回当前的时间数据
OK,直接重启服务【老师把user 3 删了,那我也删了】
重启8081 和 8082
OK,直接测试
访问:localhost:8081/user/now
可以看到个格式化成功了
试试8082:localhost:8082/user/now
没毛病【这足以说明我们确实拉取到了 配置】
OK,这样就行了,回顾一下
①
②
6.2.3 总结
将配置交给Nacos管理的步骤:
- ①在Nacos中添加配置文件
- ②在微服务中引入nacos的config依赖
- ③在微服务中添加bootstrap.yml,配置nacos地址、当前环境、服务名称、文件后缀名。这些决定了程序启动时去nacos读取哪个文件