gpt4 book ai didi

java - 当属性不存在时,Spring @Value 注释不使用默认值

转载 作者:IT老高 更新时间:2023-10-28 13:48:42 36 4
gpt4 key购买 nike

我正在尝试在构造函数的参数中使用@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 但事实并非如此。

通过调试器运行代码(仅在将 @Value("${encryptor.poolSize:10}") Integer poolSize 更改为 @Value("${encryptor .poolSize:10}") String poolSize 因为它导致了 NumberFormatExceptions) 我发现没有设置默认值,参数的形式是:

poolSize = ${encryptor.poolSize:10}

algorithm = ${encryptor.algorithm:"PBEWithMD5AndTripleDES"}

而不是预期

poolSize = 10

algorithm = "PBEWithMD5AndTripleDES"

基于 SPR-4785 ${my.property:myDefaultValue} 之类的符号应该可以工作。然而这并没有发生在我身上!

谢谢

最佳答案

可能由于缺少属性文件,属性占位符配置器的初始化失败,因此无法解析占位符。您可以将其配置为忽略丢失的文件,如下所示(如果您使用 context 命名空间来配置它):

<context:property-placeholder ignore-resource-not-found="true" ... />

您也不需要 "..." 围绕默认值。

关于java - 当属性不存在时,Spring @Value 注释不使用默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4698556/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com