type
status
date
slug
summary
tags
category
icon
password
😀
又到了一年一度的升级版本的时候,每次都会遇到各种坑,这次启动时,Nacos配置获取不到了。找了半天百度,最终会还是回归查询Github的issue。
 

📝 问题原因

分别跟了一下 SCA 2023.0.1.2 和 SCA 2023.0.1.3 的代码,发现核心问题出在 NacosPropertySourceLocator 上。NacosPropertySourceLocator 主要用来处理 Nacos Config 相关配置,以保证 NacosConfigProperites 可以正确的读取到值。

SCA 2023.0.1.2

在 SCA 2023.0.1.2 时, NacosPropertySourceLocator 是在 NacosConfigBootstrapConfiguration 中进行的配置。
NacosConfigBootstrapConfiguration 类,就是大多数微服务使用的 Bootstrap.yml。在服务刚启动的时候,就会读取 Bootstrap.yml 中 Nacos Config 相关的配置。
同时,NacosPropertySourceLocator 中还有两个方法,在启动时候会对 "shared-configs" 和 "extension-configs" 两个属性进行处理,以保证准确读取到 Nacos 配置中心的配置。

SCA 2023.0.1.3

在 SCA 2023.0.1.3 中,大部分代码被移动到了 spring-alibaba-nacos-config 模块中,仅有 NacosPropertySourceLocator 被留在了原模块中。 而且 NacosPropertySourceLocator 被从 NacosConfigBootstrapConfiguration 配置中移出。
这样就导致,在 Bootstrap 模式下,NacosPropertySourceLocator 被配置时机出现了问题。服务刚启动的时候,NacosPropertySourceLocator 根本没有被注入,这就导致 NacosConfigProperties 中主要的属性 "shared-configs" 和 "extension-configs" 是空值,所以就出现无法读取到Nacos 配置中配置的问题。
另一方面,2023.0.1.3 中 NacosPropertySourceLocator 类中的 loadSharedConfiguration 和 loadExtConfiguration 两个方法代码也被删除了。即使启动时注入的时机没有问题, "shared-configs" 和 "extension-configs" 也会是空值

🤗 结论

需要使用Spring 的config import 方式,例如:
可以配置多个:

📎 参考文章

 
Docker下JDK21设置时区Notion+NotionNext+Vercel打造免费个人博客网站
Loading...
吕行者
吕行者
吕行者
最新发布
JS实现打印完回调
2024-12-24
解决风色幻想6在Win10下卡顿的问题
2024-12-24
小程序手动让input获取焦点并弹出键盘
2024-12-24
Spring Cloud Alibaba升级到2023.0.1.3后,获取不到Nacos配置的问题
2024-12-23
Docker下JDK21设置时区
2024-12-23
解锁高效存储新体验:CloudDrive 强力推荐
2024-12-19