-
Notifications
You must be signed in to change notification settings - Fork 8.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Bootstrap mode cannot read configuration after upgrading to SCA 2023.0.1.3 #3882
Comments
我来本地验证下看看 |
已经反馈给开发者了,等等修复 |
辛苦啦,感谢感谢 |
最新的 2023 版本中,这种方式已经不支持了,需要切换到 |
使用 SCA 2023.0.1.2 时,在 Bootstrap.yml 里面添加如下配置,一切运行正常。升级至 SCA 2023.0.1.3 才无法读取。 意思是从 SCA 2023.0.1.3 开始,不支持 Bootstrap 方式了? 我的配置如下: spring:
config:
activate:
on-profile: alibaba
cloud:
nacos:
username: ${ALIBABA_USERNAME:@alibaba.username@}
password: ${ALIBABA_PASSWORD:@alibaba.password@}
config:
namespace: ${ALIBABA_NAMESPACE:@alibaba.namespace@}
server-addr: ${ALIBABA_CONFIG_SERVER_ADDR:@alibaba.config.server-addr@}
file-extension: yaml
shared-configs:
- data-id: herodotus-cloud-environment.yaml
group: ${PROFILE:@profile@}
- data-id: herodotus-cloud-platform.yaml
group: common
- data-id: herodotus-cloud-database-${DATABASE:@database@}.yaml
group: common
- data-id: herodotus-cloud-database.yaml
group: common
- data-id: herodotus-cloud-redis.yaml
group: common
- data-id: herodotus-cloud-cache.yaml
group: common
- data-id: herodotus-cloud-rest.yaml
group: common
- data-id: herodotus-cloud-kafka.yaml
group: common
# 本地存储模式必须要包含
# 远程存储:social 配置在 upms
# 本地存储:social 配置在 uaa
- data-id: herodotus-cloud-social.yaml
group: common
- data-id: ${spring.application.name}.yaml
group: service |
|
此部分文档有些过时了,社区这边安排更新到最新版本。新版本主要是以下配置方式不支持了: file-extension: yaml
shared-configs:
- data-id: herodotus-cloud-environment.yaml
group: ${PROFILE:@profile@}
- data-id: herodotus-cloud-platform.yaml
group: common
- data-id: herodotus-cloud-database-${DATABASE:@database@}.yaml
group: common
- data-id: herodotus-cloud-database.yaml
group: common
- data-id: herodotus-cloud-redis.yaml
group: common
- data-id: herodotus-cloud-cache.yaml
group: common
- data-id: herodotus-cloud-rest.yaml
group: common
- data-id: herodotus-cloud-kafka.yaml
group: common
# 本地存储模式必须要包含
# 远程存储:social 配置在 upms
# 本地存储:social 配置在 uaa
- data-id: herodotus-cloud-social.yaml
group: common
- data-id: ${spring.application.name}.yaml
group: service |
好的,感谢您的回复。 再多嘴问一下,那是不是 2023 以后只用在 application.yml 中,按照 import 方式配置即可,就不再需要 bootstrap.xml 了? |
仍然需要,按照 spring 的默认加载配置 boostarp 的优先级高于 application |
我在bootstarp.properties中配置的
解决了配置加载不到的问题,如果放在application.properties中会报日志问题,需要启动代码添加
|
升级至 SCA 2023.0.1.3 以后,SCA 无法读取 Nacos 配置中心配置。
好多小伙伴升级至 SCA 2023.0.1.3 以后,也发现该问题,相关连的 ISSUE有:#3876 #3877 #3881 和 #3874
在 #3874 提供了一种解决方案,但是并不是核心问题所在。
问题原因
分别跟了一下 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" 也会是空值结论
所以很多ISSUE #3876 #3877 #3881 都报出无法读取配置。说明还是按照原有的方式进行的配置,而且都是配置在 bootstrap.yml 中。
官网中的说明如下,而且也没有看到这种方式被取消的说明。
而 ISSUE #3874 中提到的解决方便,之所以能够读取到配置文件,是因为并没有 Bootstrap.xml 而是采用 config import 的方式。
就是官网中提到的:
# 如果您想导入特定的配置文件,可以这样设置 spring.config.import=nacos:您Nacos配置的dataId[.group]@存在Nacos的配置文件扩展名
The text was updated successfully, but these errors were encountered: