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

时间:2018-10-04 15:12:58

标签: java spring spring-boot configuration

我有一个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>>

1 个答案:

答案 0 :(得分:0)

您的映射稍微复杂一点,所以我建议定义一个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