将PropertyPlaceholderConfigurer与List一起使用

时间:2012-03-06 13:02:59

标签: spring

我正在使用PropertyPlaceholderConfigurer来映射属性文件中的String值,它可以正常工作。

我的问题是,如果我可以在我的属性文件中设置这个: myList中= A,B,C

然后将其映射到列表

@Value("${myList}")
private List<String> myList;

当我尝试它时,它将所有值放在列表的一个位置。 有没有办法告诉它用“,”来打破这个列表?

2 个答案:

答案 0 :(得分:12)

使用Spring Expression语言:

 @Value("#{'${myList}'.split(',')}") 
 private List<String> myList;

如果属性文件中的myList=A,B,C,这将导致myList(在代码中)的值为ABC

答案 1 :(得分:0)

查看this link to Spring Expression Language Features上的6.5.3节(内联列表)和6.5.4(数组构造)。

从链接:

  

列表可以使用{}表示法直接表达在表达式中。

// evaluates to a Java list containing the four numbers
List numbers = (List) parser.parseExpression("{1,2,3,4}").getValue(context); 

List listOfLists = (List) parser.parseExpression("{{'a','b'},{'x','y'}}").getValue(context);
  

{}本身就是一个空列表。出于性能原因,如果列表   它本身完全由固定文字组成,然后是常量列表   创建表示表达式,而不是构建新列表   每次评估。

我不确定这与@Value注释结合PropertyPlaceholderConfigurer完全符合您的意愿,但值得一看。