使用Nacos配置中心
Nacos还可以替代springCloudConfig来完成配置中心功能,基础层面通过DataId
和Group
来定位配置内容
引入依赖
1 2 3 4 5
| <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> </dependency>
|
配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| server: port: 9001 spring: application: name: springcloudalibaba-provider-nacos profiles: active: dev cloud: nacos: discovery: server-addr: localhost:8848 config: file-extension: yaml server-addr: localhost:8848
management: endpoints: web: exposure: include: '*'
|
在Nacos中dataId组成部分为
1 2 3 4 5 6 7
| ${prefix}-${spring.profiles.active}.${file-extension}
prefix 默认为 spring.application.name 的值,也可以通过配置项 spring.cloud.nacos.config.prefix来配置
当 spring.profiles.active 为空时,对应的连接符 - 也将不存在,dataId 的拼接格式变成 ${prefix}.${file-extension},但是还是应该配置spring.profiles.active
file-exetension 为配置内容的数据格式,可以通过配置项 spring.cloud.nacos.config.file-extension 来配置。目前只支持 properties 和 yaml/yml 类型
|
该配置文件所对应的dataId为springcloudalibaba-provider-nacos-dev.yaml
共享配置和扩展配置
除了每个微服务特有的配置之外,我们还经常会遇到多个微服务共用的配置,如数据库连接/redis连接等,nacos也提供了该功能
- shared-dataids 可以配置多个共享配置,多个使用逗号隔开
- ext-config 可以配置扩展配置,是一个数组
1 2 3 4 5 6 7 8 9 10 11 12 13
| spring: cloud: nacos: config: server-addr: localhost:8848 shared-dataids: common-mysql.yaml,common-redis.yaml ext-config: - data-id: nacos-config-base.yaml group: EXAMPLE_GROUP refresh: true
|
版本不同可能配置方式不一样,有的版本好像叫shared-configs、extension-configs
自动刷新
如果想要实现自动刷新,则在对应类上添加@RefreshScope注解
1 2 3 4 5 6 7 8 9 10 11 12 13
| @RestController @RequestMapping("/config") @RefreshScope public class ConfigController {
@Value("${config.value}") private String value;
@RequestMapping("/get") public String config(){ return value; } }
|