2015-10-19 83 views
0

我必须将一个列表集成到Spring Boot的YAML配置文件中,并且看不到如何继续。Spring Boot YAML配置和列表

我已经看到相关的其他问题:Spring Boot yaml configuration for a list of strings

而且有同样的问题。

我应用了该解决方案并解决了问题,并发现该解决方案有点棘手。

有没有办法让列表与@Value一起工作?

如果不是现在,预计未来会如何?

非常感谢。

+0

属性文件格式会比YAML更简单吗? – Jay

+0

看来这在春天还没有解决,并且没有计划要做:https://github.com/spring-projects/spring-framework/pull/747 – Marged

+0

太糟糕了,因为使它成功的方式非常棘手。也许我会用逗号将我的列表作为String,即使我认为这不是一个好方法:/ – Tetragramato

回答

2

根据本文档,您可以在yaml中执行一个列表。 http://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html#boot-features-external-config-yaml

YAML列表被表示为具有[指数] dereferencers属性键,例如此YAML:

my: 
    servers: 
     - dev.bar.com 
     - foo.bar.com 

将被转化为这些属性:

my.servers[0]=dev.bar.com 
my.servers[1]=foo.bar.com 

绑定到样性质使用Spring DataBinder实用程序(这是@ConfigurationProperties的作用),您需要在类型为java.util.List(或Set)的目标Bean中拥有一个属性,并且您需要提供setter或初始化i t具有可变值,例如这将绑定到以上属性

@ConfigurationProperties(prefix="my") 
public class Config { 

    private List<String> servers = new ArrayList<String>(); 

    public List<String> getServers() { 
     return this.servers; 
    } 
}