Nacos提供用于存储配置和其他元数据功能,为分布式系统中的外部化配置提供服务器端和客户端支持,使用Spring Cloud Alibaba Nacos Config就可以在Nacos Server集中管理Spring Cloud应用的外部属性配置。
Spring Cloud Alibaba Nacos config是在启动的bootstrap阶段,将配置加载到Spring环境中。
Spring Cloud Alibaba Nacos Config使用DataId和GROUP确定一个配置。
启动好Nacos之后,在Nacos添加如下的配置:
Data ID: nacos-config.properties
Group : DEFAULT_GROUP
配置格式: Properties
配置内容:
user.name=zhangsan
user.age=18
注意:
第一: DataId是以.properties为扩展名(默认的文件扩展名方式就是.properties);
第二:在运行时必须使用 bootstrap.properties
配置文件配置nacos server
地址,同时,spring.application.name
值必须与Nacos中配置的Data Id匹配(除了.properties或者.yaml后缀);
第三:默认使用spring.application.name
配置跟文件扩展名结合(配置格式默认使用.properties),GROUP不配置默认使用DEFAULT_GROUP
;
第四:注意当你使用域名的方式来访问Nacos时,spring.cloud.nacos.config.server-addr
配置的方式为 域名:port,例如 Nacos的域名为nacos.power.com,监听的端口为80,则 spring.cloud.nacos.config.server-addr=nacos.power.com:80
,注意80 端口不能省略;
如果要在项目中使用Nacos来实现应用的外部化配置,需要添加如下依赖:
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
Nacos Config配置中心动态刷新
Nacos Config Starter 默认为所有获取数据成功的 Nacos 的配置项添加了监听功能,在监听到服务端配置发生变化时会实时触发org.springframework.cloud.context.refresh.ContextRefresher
的refresh 方法;
可以通过配置 spring.cloud.nacos.config.refresh.enabled=false
来关闭动态刷新;
基于DataId为yam扩展名配置方式
Nacos Config 除了支持.properties格式以外,也支持yaml格式,这个时候只需要完成以下两步:
- 在应用的bootstrap.properties配置文件中显式地声明DataId文件扩展名;bootstrap.properties文件配置如下:
spring.cloud.nacos.config.file-extension=yaml
- 在Nacos的web管控台新增一个DataId为yaml扩展名的配置,如下所示:
Data ID: nacos-config.yaml
Group : DEFAULT_GROUP
配置格式: YAML
配置内容: user.name: zhangcuishan
user.age: 35
基于profile粒度的多环境配置
spring-cloud-starter-alibaba-nacos-config
在加载配置的时候,不仅仅加载了以 dataid 为 ${spring.application.name}.${file-extension:properties}
为的基础配置,还加载了dataid为
${spring.application.name}-${profile}.${file-extension:properties}
的基础配置;
在日常开发中如果遇到多套环境下的不同配置,可以通过Spring提供的 ${spring.profiles.active}
配置项来激活使用某个配置文件;
spring.profiles.active=develop
${spring.profiles.active}当通过配置文件来指定时必须放在 bootstrap.properties文件中;
比如在Nacos上新增一个dataid为:nacos-config-dev.yaml的基础配置,如下所示:
Data ID: nacos-config-deve.yaml
Group : DEFAULT_GROUP
配置格式: YAML
配置内容: current.env: dev-env
如果需要切换到生产环境,只需要更改 ${spring.profiles.active} 参数配置即可,如下所示:
spring.profiles.active=product