我正在使用PropertyPlaceholderConfigurer来映射属性文件中的String值,它可以正常工作。
我的问题是,如果我可以在我的属性文件中设置这个: myList中= A,B,C
然后将其映射到列表
@Value("${myList}")
private List<String> myList;
当我尝试它时,它将所有值放在列表的一个位置。 有没有办法告诉它用“,”来打破这个列表?
答案 0 :(得分:12)
使用Spring Expression语言:
@Value("#{'${myList}'.split(',')}")
private List<String> myList;
如果属性文件中的myList=A,B,C
,这将导致myList
(在代码中)的值为A
,B
和C
答案 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
完全符合您的意愿,但值得一看。