我遇到了下一种情况:我已经从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文件而不是远程配置服务器-一切都很好。
有人遇到过同样的问题吗?我真的需要你的帮助。
P.S。 Spring配置服务器也具有2.0.5版本。
答案 0 :(得分:1)
最后,我找到了问题的根本原因。
好吧,因为我不是Cloud Config Server的超级有经验的人,所以很难找到原因。都是为了覆盖不同配置文件的属性列表:
假设您在配置服务器上有两个属性文件:
application.yml
application-dev.yml-它具有更高的优先级,因此它会覆盖之前的所有内容。
在application.yml中,我有这样的属性
some:
property:
list:
所以,这只是一个空列表。
但是在application-dev.yml中,我有这样的属性:
some:
property:
list:
- value 1
- value 2
- value 3
因此,在这种情况下,您将得到像我上面提到的错误。 您需要做的-像这样修复空白列表。
some:
property:
list:
- ""