gpt4 book ai didi

spring-boot - Spring Boot 2.0.5 无法绑定(bind)来自 spring-cloud-config 服务器的属性列表

转载 作者:行者123 更新时间:2023-12-05 06:29:55 24 4
gpt4 key购买 nike

我遇到了下一个情况:我已经从 Spring Boot 1.5.x 迁移了我的应用程序到 Spring Boot 2.0.5。

我有下一节课:

@ConfigurationProperties(prefix = "some.property")
public class Myclass {

@Getter
@Setter
private List<String> list;

}

我也有这样的 yml 配置:

some:
property:
list:
- value 1
- value 2
- value 3

此配置是从远程 spring-cloud-config 服务器获取的。

如果我尝试运行应用程序,我会遇到下一个异常:

org.springframework.boot.
context.properties.bind.BindException: Failed to bind properties under
'some.property' to Myclass


Description:

Property: some.property.list[0]
Value: value 1
Origin: "some.property.list[0]" from property source "bootstrapProperties"
Reason: The elements
[some.property.list[0],some.property.list[1],some.property.list[2]] were
left unbound.
Property: some.property.list[1]
Value: value 2
Origin: "some.property.list[1]" from property source "bootstrapProperties"
Reason: The elements
[some.property.list[0],some.property.list[1],some.property.list[2]] were
left unbound.

Property: some.property.list[2]
Value: value 3
Origin: "some.property.list[2]" from property source "bootstrapProperties"
Reason: The elements
[some.property.list[0],some.property.list[1],some.property.list[2]] were
left unbound.

但是如果我使用本地 bootstrap.yml 文件而不是远程配置服务器 - 一切都很好。

有人遇到过同样的问题吗?我真的需要你的帮助。

附言Spring 配置服务器也有 2.0.5 版本。

最佳答案

终于找到了问题的根本原因。

好吧,因为我对云配置服务器不是很有经验,所以很难找到原因。这都是关于覆盖不同配置文件的属性列表:

假设您的配置服务器上有两个属性文件:

应用程序.yml

application-dev.yml - 它具有更高的优先级,因此它会覆盖之前的所有内容。

在 application.yml 中我有这样的属性

some:
property:
list:

所以,这只是一个空列表。

但是在 application-dev.yml 中我有这样的属性:

some:
property:
list:
- value 1
- value 2
- value 3

因此,在这种情况下,您会遇到我上面提到的错误。您需要做的就是像这样修复空列表。

some:
property:
list:
- ""

关于spring-boot - Spring Boot 2.0.5 无法绑定(bind)来自 spring-cloud-config 服务器的属性列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52932907/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com