目录
1.我们使用@Value("${xxxx}")来注入配置值的时候,在类上加上注解@RefreshScope。
2.通过@ConfigurationProperties注入,自动刷新。
这一篇主要学习:
1.微服务拉去配置Nacos配置
2.Nacos配置的热更新
3.多环境配置的读取和优先级
项目启动正常流程:
Nacos配置管理,这些配置以后多用来做热更新,存放一些开关配置信息,方便以后统一管理服务
流程如下:
我们引入了bootstrap.yml,因为项目启动要先读nacos的配置,以前的nacos地址配置在yml中了,我们没法获取nacos地址。而bootstrap.yml的优先级更高,我们把nacos地址存在这里面,项目启动时,会先去bootstrap读nacos地址,然后根据地址按照流程图以此进行。
下面我们看微服务如何拉去nacos配置:
1.在Nacos管理页面添加配置:
配置内容:就相当于我们在application.yml里面的配置信息,方便管理。
2.bootstrap.yml配置如下:
注意啊,我们的yml的相关信息要和我们的配置信息的Data ID 一致
spring:
application:
name: userservice #服务名称
profiles:
active: dev #环境
cloud:
nacos:
server-addr: localhost:8848
config:
file-extension: yaml #文件名缀名
3.引入Nacous配置管理依赖:
<!-- Nacos配置管理-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
这样,我们就可以读到nacos的配置了。
上面只是简单的实现了对nacos配置的读取
下面我们要学一些配置的热更新,即项目不用重启,即可改变配置信息且生效
实现热更新方法有两种:
1.我们使用@Value("${xxxx}")来注入配置值的时候,在类上加上注解@RefreshScope。
2.通过@ConfigurationProperties注入,自动刷新。
建议用第二种------------------------------------------
Nacos配置环境共享:
当我们在Nacos管理面板添加配置信息时,如果不带环境,只有【服务名】.yaml,就是多环境共享的配置信息
我们的yml配置的时userservice-dev.ymal,但是项目启动时,既会读取userservice-dev.ymal的配置,又会读取userservice.yaml的配置
那么咱们的配置信息就有三种了:
1.本地的yml
2.从nacos读取的【服务名】-【spring.profile.active】.yaml
3.从nacos读取的【服务名】.yaml,多环境共享
那么如果又重复配置信息的话,优先级谁更高?
答案是,nacos的带环境的更高>环境共享配置>本地.yml