我正在尝试使用 Spring @Configuration 和 @ConfigurationProperties 组合从配置中加载属性。我有一个 POJO,它扩展了 HashMap<Integer, String> 并且里面有一个变量。(见MyConfigPojo
下文)。从 .yaml 文件中,我具有相同的形状。但是,在启动应用程序时,尝试将 defaultValue 的字符串解析为 Integer 时出现错误。
@Configuration
@ConfigurationPropeties(prefix = "my-config")
public class MyConfigPojo extends HashMap<Integer, String> {
private String defaultValue;
private String getValueForIdOrDefault(int id); // this.get(id) OR ELSE defaultValue
}
在配置中我有这个:
myConfig:
1: "my first value"
23: "my 23rd value"
defaultValue: "cheese"
这导致
APPLICATION FAILED TO START
Description:
Failed to bind properties under 'myPackage' to MyConfigPojo:
Property: myConfig[1]
Value: cheese
我觉得这很奇怪,所以我打开了 TRACE 日志并发现了这个:
99 common frames omittedCaused by: java.lang.NumberFormatException: For input string: "defaultValue" at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
有没有办法拦截读取这个文件或告诉 Spring 如何正确设置值?