传统配置的缺点
传统的配置方法是直接将配置文件放在项目中
其缺点是:
1、当配置文件发生改变时,需要重启项目
2、在集群环境下,需要一个一个进行修改
配置中心的优点
配置中心的存在就是为了解决传统配置方式的缺点的
因此其优点也显而易见
1、实现不同环境不同配置的统一管理
2、配置属性修改后自动刷新
使用配置中心的时机
无需将所有的配置都放在配置中心,一般将热更新配置放在配置中心
使用配置中心后的读取顺序如下
我们可以看到 ,当有配置中心的时候,程序会先读取配置中心,再读取本地 application.yml 配置文件,那程序在读取nacos配置中心的时候,应该如何知道nacos所在的位置以及读取哪个文件呢?所以我们不能将nacos地址放在本地的 application.yml 中,应该放在 bootstrao.yml 中,这是一个读取时机早于配置中心的文件
然后是nacos中的配置文件读取早于本地 application.yml 文件,那么我们是不是可以猜测本地application.yml 文件的优先级是要大于配置中心的,即 相同的配置项不同的取值,以application.yml 文件中的取值为准
使用方法
(一)在Nacos中添加配置
这边的Data ID的命名规则一般是 [服务名称]-[当前项目的运行环境<dev>].[后缀名<yaml>]
(二)添加依赖
<!--nacos配置管理依赖-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
(三)在resource目录添加bootstrao.yml
spring:
application:
name: userservice # 服务名称
profiles:
active: dev #开发环境,这里是dev
cloud:
nacos:
server-addr: localhost:8848 # Nacos地址
config:
file-extension: yaml # 文件后缀名
配置自动更新
Nacos中的配置文件变更后,微服务无需重启就可以感知。不过需要通过下面两种配置实现:
方式一:在@Value注入的变量所在类上添加注解@RefreshScope
方式二:使用@ConfigurationProperties注解