Nacos配置中心
Nacos除了可以做注册中心,🔗Nacos下载和注册中心教程,同样可以做配置管理来使用。
一、统一配置管理
当微服务部署的实例越来越多,达到数十、数百时,逐个修改微服务配置就显得十分的不方便,而且很容易出错。我们需要一种统一配置管理方案,可以集中管理所有实例的配置。
nacos一方面可以将配置集中管理,另一方可以在配置变更时,及时通知微服务,实现配置的热更新(更新非初始化应用配置可以不重启项目)
二、Nacos配置中心入门
Nacos中添加配置
在Nacos服务端创建一个配置,如下所示:
1、
2、
测试要拉去的配置
pattern:dateformat: yyyy-MM-dd HH:mm:ss
微服务集成配置中心
1、在要使用该配置的模块添加Nacos配置中心的依赖
<!-- nacos作为配置中心时所对应的依赖 -->
<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
2、在使用该配置的模块,配置文件中配置 Nacos Config 地址并引入服务配置
# 配置数据库的连接信息
spring:cloud:nacos:config:server-addr: 你的ip:端口config:import:- nacos:spzx-cloud-order-dev.yml # 冒号分割不需要加空格 , 可以引入多个配置,写了这句话就相当于把
#pattern:#dateformat: yyyy-MM-dd HH:mm:ss 拉去到了配置文件中
3 读取自定义配置
@Value (读取的配置文件只在一个类中使用时或者单个属性,常用@Value)
@ConfigurationProperties( 读取的配置文件需要在多个类中使用时,或者批量的属性,可以随时注入使用)
定义一个实体类,并在启动类开启
@ConfigurationProperties(prefix = "pattern")
//使用ConfigurationProperties需要在启动类中开启
//@EnableConfigurationProperties(value = {PatternProperties.class})
@Data //提供get方法
public class PatternProperties {private String dateformat;
}
- 使用
三、配置热更新
我们最终的目的,是修改Nacos中的配置后,微服务中无需重启即可让配置生效,也就是配置热更新。实现配置的热更新有两种方式:
方式一:在@Value注入的变量所在类上添加注解**@RefreshScope**
方式二:通过实体类,配合@ConfigurationProperties注解读取配置信息,自动支持热更新 .把@RefreshScope加在配置类上
四、配置优先级
如果在application.yml文件中和Nacos配置中心中都定义了相同的配置内容,那么哪一个配置的优先级较高呢?
优先级顺序:Nacos配置中心的配置> application.yml