java - 如何在我的属性中设置 Map 字段,而不必单独列出每个键/值对?
问题描述
我有一个带有Map <String, List<String>>
字段的服务的 Spring Boot 应用程序。地图是从属性文件中获取的,其设置如下:
mapField.key1[0]=value10
mapField.key1[1]=value11
mapField.key1[2]=value12
mapField.key2[0]=value20
如何设置如下:
mapField={key1=[value10, value11, value12], key2=[value20]}
没有遇到转换错误:
Failed to bind properties under 'mapField' to Map<String, List<String>>
解决方案
您的映射有点复杂,所以我建议定义一个 ConfigurationProperties。
@Configuration
@ConfigurationProperties
public class MapFieldConfig {
private Map<String,List<String>> myMap;
public Map<String, List<String>> getMyMap() {
return myMap;
}
public void setMyMap(Map<String, List<String>> myMap) {
this.myMap = myMap;
}
}
通过这种方式,您可以自动装配包含目标配置的新对象:
@Autowired
MapFieldConfig mapFieldConfig;
您的 application.properties 文件将是:
myMap.key1=a,b,c
myMap.key2=d,c,f
推荐阅读
- javascript - 尝试在另一个文件 nodejs 文件中导入导出的变量时出错
- macos - 在 Homebrew 中使用本地依赖项
- ios - 无法连接到 Hasura PostGreSQL docker 容器的 Web 套接字
- unity3d - 为什么我的统一应用程序在我启动另一个应用程序时崩溃?
- java - 将 Stream 包装到 Flux 时的事务处理
- javascript - 如何处理双夏令时浏览器兼容性问题
- python - 如何在 FEED_URI (Scrapy) Python 中传递多个参数
- r - 单击时闪亮仪表板的 dropdownMenu 事件
- python - 从 python 中找不到 Travis 环境变量
- java - 如何立即关闭 InputStream?