繁体   English   中英

如何在属性中设置地图字段,而不必单独列出每个键/值对?

[英]How can I set a Map field in my properties without having to list each key/value pair individually?

我有一个带有服务的Spring Boot应用程序,该服务具有Map <String, List<String>>字段。 映射是从属性文件中获取的,该文件的设置如下:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM