将HashMap加载到嵌套配置Bean会引发Binding Exception

时间:2019-02-01 17:23:39

标签: java spring spring-boot-configuration

我正在尝试此处给出的这个示例: https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#boot-features-external-config-typesafe-configuration-properties

一切正常,除了尝试添加其他属性以加载哈希图值

属性添加为:

    demoapp.security.policies={'KEY1': 'value1', 'KEY2': 'value3', 'KEY3': 'value5'}

在Secutiry内部类中,添加了另一个变量,如下所示:

private Map<String, String> policies;

public Map<String, String> getPolicies() {
  return policies;
}

public void setPolicies(Map<String, String> policies) {
  this.policies = policies;
}

但这会引发错误:

    Caused by: org.springframework.core.convert.ConverterNotFoundException: No converter found capable of converting from type [java.lang.String] to type [java.util.Map<java.lang.String, java.lang.String>]

有趣的是,如果将其放在普通(非嵌套)配置类中,对我来说很好用。

这里出了什么问题,请提出任何建议

1 个答案:

答案 0 :(得分:0)

绑定到地图时,您绑定的是嵌套属性,因此需要分别指定属性。

属性文件:

demoapp.security.policies.KEY1=value1
demoapp.security.policies.KEY2=value3
demoapp.security.policies.KEY3=value5

YAML文件:

demoapp.security.policies:
  "[KEY1]": value1
  "[KEY2]": value3
  "[KEY3]": value5