配置加载
配置文件的加载规则是由下面几个属性组合而成的
1 2 3 4 5 6
| spring.cloud.nacos.config.namespace= 默认:""//空,此处填的是namespaceId,而不是名字public spring.cloud.nacos.config.group= 默认:DEFAULT_GROUP # ${spring.cloud.nacos.config.prefix} > ${spring.cloud.nacos.config.name} > ${spring.application.name} spring.cloud.nacos.config.prefix= spring.cloud.nacos.config.file-extension= 默认 .properties
|
启动配置bootstrap.properties
应用名以poseidon为例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| # 基础配置 spring.application.name=poseidon spring.cloud.nacos.config.file-extension=yaml spring.cloud.nacos.config.server-addr=192.168.12.230:8848 spring.cloud.nacos.config.namespace= spring.cloud.nacos.config.group=yourGroup # 多配置加载 # 使用默认的 DEFAULT_GROUP,如果上面配置了,则按照上面配置的加载 # 默认自动刷新 spring.cloud.nacos.config.ext-config[0].data-id=poseidon-biz.properties # 不在默认的组,不会自动刷新 spring.cloud.nacos.config.ext-config[1].data-id=nacos-multi-config-log.yaml spring.cloud.nacos.config.ext-config[1].group=yourGroup # 不在默认的组,手动启动自动刷新 spring.cloud.nacos.config.ext-config[2].data-id=nacos-multi-config-db.yaml spring.cloud.nacos.config.ext-config[2].group=yourGroup spring.cloud.nacos.config.ext-config[2].refresh=true # 测试加载顺序 spring.cloud.nacos.config.ext-config[3].data-id=nacos-multi-config-redis.yaml spring.cloud.nacos.config.ext-config[3].group=yourGroup
|
- 通过
spring.cloud.nacos.config.ext-config[n].data-id的配置来配置多个DataId 的配置 - 通过
spring.cloud.nacos.config.ext-config[n].group 的配置来指定dataId所在的组,不明确指定的话使用默认的DEFAULT_GROUP - 通过
spring.cloud.nacos.config.ext-config[n].refresh 的配置来控制该dataId属性变更时,是否动态刷新加载,默认如果不在DEFAULT_GROUP,自动刷新是关闭的,可以通过置为true来手动开启。
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} 这个配置项来配置。
多个DataId同时配置时,它的优先级关系是 spring.cloud.nacos.config.ext-config[n].data-id n的值越大,优先级越高,即先加载,所以n越小则为最终生效的配置
spring.cloud.nacos.config.ext-config[n].data-id= 必须带上扩展名,即文件格式,支持properties,也支持yaml/yml.
此时spring.cloud.nacos.config.file-extension 的配置对自定义扩展的配置的data-id是无效的。
共享配置
1 2 3 4
| # 共享配置 spring.cloud.nacos.config.shared-dataids=common-log.yaml,common-redis.yaml spring.cloud.nacos.config.refreshable-dataids=common-log.yaml
|
- 通过
spring.cloud.nacos.config.share-dataids 来支持多个共享dataId的配置,多个配置文件之间用逗号隔开。 - 通过
spring.cloud.nacos.config.refreshable-dataids 来支持哪些共享配置的dataId在变化时,应用中是否动态刷新,能感知到最新的值,多个dataId之间用逗号隔开。如果没有明确指定的配置,默认情况下所共享的配置是不支持动态刷新。
spring.cloud.nacos.config.share-dataids 的配置加载顺序是按照从左到右的,所以如果出现相同的配置时,后面的会覆盖前面的
使用spring.cloud.nacos.config.share-dataids 来配置共享配置时,需要加上后缀名,即properties,yaml/yml.此时的spring.cloud.nacos.config.file-extension 的配置对此项无效
通过使用spring.cloud.nacos.config.refreshable-dataids 来指定哪些共享配置是需要支持自动刷新的。默认未指定的配置是不支持自动刷新的。同时也需要加上配置的后缀名
配置的优先级
spring cloud alibaba nacos config 目前提供了三种配置能力从Nacos拉取相关的配置。
A:通过spring.cloud.nacos.config.shared-datadis 支持多个共享data id的配置。
B:通过spring.cloud.nacos.config.ext-config[n].data-id 的方式支持多个扩展Data Id的配置。
C:通过内部相关规则(应用名、应用名+profile)自动生成的DataId配置。
优先级:A < B < C
完全关闭配置
通过设置spring.cloud.nacos.config.enabled =false 来完全关闭Spring Cloud Nacos Config 配置功能。
热刷新配置示例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| multiapp: mutualfans: taskDetailH5Url: https://baidu.com/task-details starDetailH5Url: https://baidu.com/star-details baseDyUid: 123 dailyMaxApply: 141 seats: 20 startCarNum: 2 ticketFee: 1000 serviceFee: 50 serviceMoney: 0.05 serviceOldMoney: 0.1 maxFineMoney: 950 freezeMoneyStr: 10 returnMoneyStr: 9.5
|
or
1 2 3 4 5 6 7 8 9 10 11 12 13
| multiapp.mutualfans.taskDetailH5Url=https://baidu.com/task-details multiapp.mutualfans.starDetailH5Url=https://baidu.com/star-details multiapp.mutualfans.baseDyUid=3729136594481880 multiapp.mutualfans.dailyMaxApply=141 multiapp.mutualfans.seats=20 multiapp.mutualfans.startCarNum=2 multiapp.mutualfans.ticketFee=1000 multiapp.mutualfans.serviceFee=50 multiapp.mutualfans.serviceMoney=0.05 multiapp.mutualfans.serviceOldMoney=0.1 multiapp.mutualfans.maxFineMoney=950 multiapp.mutualfans.freezeMoneyStr=10 multiapp.mutualfans.returnMoneyStr=9.5
|
定义Bean
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| @Data @Component @ConfigurationProperties("multiapp.mutualfans") public class MutualFansOption { private String taskDetailH5Url; private String starDetailH5Url; private String baseDyUid; private Integer dailyMaxApply; private Integer seats; private Integer startCarNum; private Integer ticketFee; private Integer serviceFee; private Double serviceMoney; private Double serviceOldMoney; private Integer maxFineMoney; private String freezeMoneyStr; private String returnMoneyStr; }
|
使用 @RefreshScop 则可以保证配置的实时同步