Spring bean使用外部属性文件初始化地图

时间:2011-12-20 02:23:37

标签: java spring

我有一个Map,它有一个Map作为其成员变量。像这样的东西 -

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

用户可以在地图中指定任意数量的键及其未预定义的概念。他们基本上可以将任意数量的文件分组到一个密钥中,并提供地图值。

我使用的是PropertyOverrideConfigurer,在属性文件中,我试图做这样的事情 -

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

现在这不起作用,因为与key1或key2对应的List值为null。因此,Spring Bean创建失败,并显示无法将值设置为NULL的属性。

处理这种情况的最佳方法是什么?

2 个答案:

答案 0 :(得分:2)

您应该可以使用LazyMap&amp;来自公共收藏的LazyList来实现这一点。

答案 1 :(得分:0)

尝试使用来自commons集合的DefaultedMap初始化filesByKey变量。如果map不包含必需的键,它可以返回默认值而不是null。