如何在Spring中绑定一个字符串数组属性?

时间:2016-08-16 23:48:29

标签: spring spring-mvc spring-boot

我的application.properties文件中有以下内容

some.server.url[0]=http://url
some.server.url[1]=http://otherUrl

如何在@Bean方法中使用@Value anotation引用属性数组?

我正在使用Java 6与Tomcat 7和Spring boot 1.4

3 个答案:

答案 0 :(得分:8)

我也遇到了与您提到的相同的问题,似乎在 application.properties 上使用索引表单也不适用于我。

为了解决这个问题,我做了类似下面的事情

some.server.url = url1, url2

然后,为了获得这些属性,我只需使用 @Value

@Value("${some.server.url}")
private String[] urls ;

Spring 使用逗号自动拆分字符串,并返回数组 AFAIK 这是在Spring 4+

中引入的

如果您不希望 comma (,) 作为分隔符,则必须使用 SpEL ,如下所示。

@Value("#{'${some.server.url}'.split(',')}")
private List<String> urls;

split() 接受分隔符

答案 1 :(得分:6)

您可以使用集合。

@Value("${some.server.url}")
private List<String> urls;

您还可以使用配置类并将bean注入其他类:

@Component
@ConfigurationProperties("some.server")
public class SomeConfiguration {
    private List<String> url;

    public List<String> getUrl() {
        return url;
    }

    public void setUrl(List<String> url) {
        this.url = url;
    }
}

答案 2 :(得分:3)

请按照以下步骤操作

1) @Value( “$ {} some.server.url”) 私人列表网址;

2) @ConfigurationProperties( “some.server”) 公共类SomeConfiguration {

3) 你应该有getter和setter作为变量'urls'