java - 一个 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 进行依赖注入。
非常感谢任何帮助/线索
解决方案
谢谢你的提示。我实际上是通过使用杰克逊的 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
推荐阅读
- javascript - 如何使用 react-router-dom 解决这个问题?
- scala - 强制在整个代码库中为某些对象使用特定集合
- elasticsearch - 如何在 ElasticSearch 上使用过滤器(或查询)条件获取所有字段名称?
- python-3.x - 如何自动化(使用python)腻子配置(代理设置和私钥),然后执行命令以在同一会话上传输文件
- typescript - typescript - 如何创建基于参数参数化构建的类型
- optimization - or-tools中节点的条件赋值
- python - 合并两个 JSONPath 查询
- node.js - Windows-1252 编码在 NodeJS 中被识别为 ISO-8859-2
- node.js - 我可以在不等待完成的情况下执行存储过程吗?
- google-chrome - 将 NWJS 从 0.37.3 升级到最新版本后,Google App ID 丢失