我在属性文件中有以下空属性:
test.prop=
当我尝试在Spring应用程序中使用该属性时,取决于我是使用原始类还是包装类,我会得到不同的结果。
@Value("${test.prop}")
Boolean testProp = true;
结果: true
@Value("${test.prop}")
boolean testProp = true;
结果: IllegalArgumentException:无效的布尔值[]
与整数相似:
@Value("${test.prop}")
Integer testProp = 1;
结果: 1
@Value("${test.prop}")
int testProp = 1;
结果: java.lang.NumberFormatException:对于输入字符串:“”
问题:
我尝试使用${test.prop:defaultValue}
设置默认值,但对于原语,我得到相同的异常,对于我收到的包装类null
。
答案 0 :(得分:3)
"空房产"您在配置中具有空值""
的现在属性。尝试转换为属性类型时使用此值。如果要使用默认值,请注释掉属性文件中的属性设置(或完全省略它):
#test.prop=
并使用默认的@Value
语法:
@Value("${test.prop:true}") boolean booleanProp;
默认设置仅在属性中未提供值时应用,而不是在其为空或无效时应用。上面的代码对原语和包装器的作用相同。