2011-12-20 10 views
0

私はそのメンバ変数としてMapを持つクラスを持っています。このような何か -Spring Beanは外部プロパティファイルを使用してマップを初期化します

public Clas Engine{ 
    private Map<String,List<String>> filesByKey; 

    public void setFilesByKey(Map<String,List<String>> map) { 
    this.filesByKey = map; 
    } 
    public Map<String,List<String>> getFilesByKey() { 
    return filesByKey; 
    } 
} 

ユーザーは、マップとその事前に定義されていない概念にキーの任意の数を指定することができます。基本的には、任意の数のファイルを1つのキーとプロバイダにMap Valueにグループ化できます。私はPropertyOverrideConfigurerを使用してプロパティでた

は、私がこのような何かをしようとしていた、ファイル -

engine.filesByKey[key1][0]=file1 
engine.filesByKey[key1][1]=file2 
engine.filesByKey[key2][0]=anotherfile1 
engine.filesByKey[key2][1]=anotherfile2 

KEY1またはKEY2に対応するリストの値がであることにnullであるので、今、これが動作しません。だから、Spring Beanの作成は失敗し、NULLのプロパティに値を設定できないというメッセージが表示されます。

この状況を処理する最善の方法は何ですか?

答えて

2

これを実現するには、LazyMap & LazyListをコモンズコレクションから使用できるようにする必要があります。

+0

これは魅力的なように機能しました。ありがとうございます。 – Shamik

0

filesByKey変数をDefaultedMapで初期化し、コモンズコレクションから作成してください。 mapに必要なキーが含まれていない場合、nullではなくデフォルト値を返すことができます。

関連する問題