首页 > 解决方案 > 一个 Map 的 List 的 Spring 值注入

问题描述

这听起来可能很疯狂,但我正在尝试为我的以下数据结构获取属性文件

@Value("#{${myBigMap}}")
Map<String, List<Map<String, String>>> myBigMap;

属性文件应该看起来像

myBigMap = { \
      "key1": [{subkey1:'subval1'}], \
      "key2": [{subkey3:'subval3'},{subkey4:'subval4'}] \
}

我可以让地图的地图工作,但这个似乎太有弹性了。我有一些用于其他值注入的系统属性。不确定我是否可以手动将 yaml 属性组合到属性源中。

它不是 Spring Boot 应用程序。我们只是使用 Spring 进行依赖注入。

非常感谢任何帮助/线索

标签: javaspringdata-structuresproperties

解决方案


谢谢你的提示。我实际上是通过使用杰克逊的 yaml 帮助让它工作的

ObjectMapper mapper = new ObjectMapper(new YAMLFactory());
    try {
        Resource myResource = new ClassPathResource("my.yaml");
        Map<String, List<Map<String, String>>> myMap = mapper.readValue( myResource.getInputStream() , Map.class);
        }

我的 yaml 看起来像

k1:
  - sk1: val1
  - sk2: val2

k2:
  - sk3: val3
  - sk4: val4

推荐阅读