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

Spring Boot 2.0.5 can not bind list of properties from spring-cloud-config server

我已经 运行 进入下一个情况:我已经从 Spring Boot 1 迁移了我的应用程序。5.x 到 Spring 启动 2.0.5.

我有下一个class:

@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 版。

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

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

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

application.yml

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

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

some:
  property:
    list:

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

但是在应用程序中-dev.yml我有过这样的属性:

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

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

some:
  property:
    list:
      - ""