2012-03-06 12 views
6

PropertyPlaceholderConfigurerを使用してプロパティファイルから文字列値をマッピングしていますが、問題なく動作します。私は何かを設定することができるかどうListでPropertyPlaceholderConfigurerを使用

私の質問は、この私のプロパティファイル内: ます。myList = A、B、C

そして、私はそれことをしようとすると、リスト

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

にマップすべての値をリストの1つの場所に置きます。 "、"でこれをリストに分割する方法はありますか?

答えて

12

使用して春の式言語:

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

myList=A,B,C場合はプロパティファイルで、これは(コードで)myListになります値ABC

+0

いいね、ありがとう!!! – Joly

+0

スプリング3を使用していて、変換サービスを定義している場合、元のコードは.split()なしで動作することに注意してください。http://stackoverflow.com/a/29970335/228369 – chrismarx

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); 

{}空のリストを意味します。パフォーマンス上の理由から、リスト が完全に固定リテラルで構成されている場合は、各リストに新しいリスト を作成するのではなく、式を表すために定数リストが作成されます( )。

私はあなたがPropertyPlaceholderConfigurerとの組み合わせで@Value注釈付きにそれを希望のように、これは正確に動作することを確認していないが、それは一見の価値あり。

+0

おかげで、私は見ているだろうが、あなたが言うように@Valueアノテーションは動作しないかもしれません – Joly

+0

私が思ったように@Valueでは動作しませんが、とにかく感謝します – Joly

+0

これは正確に動作しませんでした。 –

関連する問題