当属性不存在时,弹簧@Value注释不使用默认值
我正在尝试在构造函数的参数中使用@Value注释,如下所示:
@Autowired
public StringEncryptor(
@Value("${encryptor.password:\"\"}") String password,
@Value("${encryptor.algorithm:\"PBEWithMD5AndTripleDES\"}") String algorithm,
@Value("${encryptor.poolSize:10}") Integer poolSize,
@Value("${encryptor.salt:\"\"}") String salt) {
...
}
当属性文件存在于类路径上时,属性将完美加载,并且测试可以正常执行。但是,当我从类路径中删除属性文件时,我本来希望使用默认值,例如poolSize将设置为10或算法设置为PBEWithMD5AndTripleDES,但事实并非如此。
通过调试器运行代码(只有在更改为导致NumberFormatExceptions之后才能工作),我发现没有设置默认值,参数采用以下形式:@Value("${encryptor.poolSize:10}") Integer poolSize
@Value("${encryptor.poolSize:10}") String poolSize
poolSize = ${encryptor.poolSize:10}
或
algorithm = ${encryptor.algorithm:"PBEWithMD5AndTripleDES"}
而不是预期的
poolSize = 10
或
algorithm = "PBEWithMD5AndTripleDES"
基于 SPR-4785,诸如 ${my.property:myDefaultValue} 之类的符号应该可以正常工作。然而,这对我来说并没有发生!
谢谢