一、需求
主要實現(xiàn) nacos 作為配置中心的一些使用方法。
二、實現(xiàn)功能
1、加載 product-provider-dev.yaml 配置文件
2、實現(xiàn)配置的自動刷新
3、實現(xiàn)加載多個配置文件
4、配置文件的優(yōu)先級
三、注意事項
1、和 nacos config 配置相關的代碼都需要定義在 bootstrap.yml配置文件中
spring.application.name
spring.profiles.active
spring.cloud.nacos.config.xxx
2、測試的過程中,發(fā)現(xiàn)如果定時任務的類上增加類 @RefreshScope 注解,那么 nacos 中的配置屬性動態(tài)修改后,這個定時任務會失效。(參考代碼:com.huan.study.product.RefreshScopeScheduledTask)
3、如果在一個線程中,隔固定周期打印@Value注解中的值,在nacos修改值后,不會改變(參考代碼com.huan.study.product.PrintPropertiesTask#initPrint)
4、最好不要出現(xiàn)配置文件中存在優(yōu)先級。
四、功能實現(xiàn)
1、加載 單個 配置文件
1、data id 的定義:
${prefix}-${spring.profile.active}.${file-extension}
prefix:默認情況下為 spring.application.name 的值,也可以通過配置項 spring.cloud.nacos.config.prefix來配置
spring.profile.active:這個值 需要在 bootstrap.yml配置文件中定義,或通過命令行參數(shù)傳遞,可以為空,此時配置退化為 ${prefix}.${file-extension}
file-extension:指定配置文件的后綴,默認為properties,可以指定為yaml
2、和 nacos 相關的配置放置的位置
需要放在 bootstrap.yml 配置文件中。
2、實現(xiàn)配置的自動刷新
1、基于 ConfigurationProperties 配置的屬性,可以自動刷新配置。
2、基于 @Value 注解配置的屬性,需要在類上增加 @RefreshScope 注解
3、基于 @ConditionalOnProperty 這類注解,配置的屬性如果放在 nacos中配置,第一次程序啟動的時候生效,后期在nacos中修改不生效
注意:
????測試的過程中,發(fā)現(xiàn)
1、如果定時任務的類上增加類 @RefreshScope 注解,那么 nacos 中的配置屬性動態(tài)修改后,這個定時任務會失效。
2、如果在一個線程中,隔固定周期打印@Value注解中的值,在nacos修改值后,不會改變
3、實現(xiàn)加載多個配置文件
可以實現(xiàn)同一個項目中存在多個配置文件,或多個項目共享同一個配置文件
4、配置文件的優(yōu)先級
spring.cloud.nacos.config.extension-configs[n].data-id中的 n 的值越大,優(yōu)先級越高。
五、代碼路徑
https://gitee.com/huan1993/spring-cloud-alibaba-parent/tree/master/nacos-config
六、參考鏈接
https://github.com/alibaba/spring-cloud-alibaba/wiki/Nacos-config
配置屬性無法刷新