denny.lin
denny.lin
github上官方的例子跑起来是没问题,我查下来,有两个问题需要注意: 1. 配置方式调整。原来依赖bootstrap的方式已经被放弃,其它配置方式的import集合的**文件一定不能有后缀**,否则会找不到文件,配置如下。另外2023.0.1.2原本会默认加载工程名的配置文件,在2023.0.3.2测试下来是以import的文件列表为准,看起来不会再加载nacos中的默认工程文件。 ``` spring: config: import: - nacos:common-server ``` 2. 要去除spring-cloud-starter-bootstrap依赖,这点很重要!!!我查了几天,最后才发现一旦工程依赖这个jar包,会默认启用bootstrap方式,最后在代码的RefreshEventListener的refresh属性会自动注入LegacyContextRefresher,这个refresh不会读取nacos中的配置更新。要让nacos配置更新能生效,refresh属性必须注入ConfigDataContextRefresher,这个refresh监听到context的refresh事件后,会主动去调用NacosConfigDataLoader的load加载nacos中配置属性,并生成propertySource设置到Environment对象中。去除spring-cloud-starter-bootstrap依赖,才会让ConfigDataContextRefresher自动注入到RefreshEventListener。 最后的代码示例: ``` spring: config: import: - nacos:common-server cloud: nacos: server-addr: 127.0.0.1:8848 username: nacos password: xxxxxx discovery: heart-beat-interval: 2000...