考虑file
defaultProperty="default"
overrideProperty="override"
我的班级首先需要检查overrideProperty
是否可用并使用它,否则回退到defaultProperty
。
我尝试这样做
MyClass {
@Value("${overrideProperty: defaultProperty}")
String tokenizationAlgorithm;
}
这不起作用,因为我得到的是defaultProperty
和不是 default
(这是值)
如何将表达式放在@Value
注释的默认值部分?
答案 0 :(得分:2)
使用以下语法:
@Value("${overrideProperty:${defaultProperty}}")
${overrideProperty:${defaultProperty}}
将传递给PropertyPlaceholderHelper
的replacePlaceholders
方法,该方法会将格式为${name}
的所有占位符替换为相应的值。
请注意,由于parseStringValue
方法的递归特性,${defaultProperty}
值将在${overrideProperty}
之前得到解决。因此,即使在提供${overrideProperty}
的情况下,您也应始终拥有默认值。此外,您可以为默认值提供默认值!
@Value("${overrideProperty:${defaultProperty:literallyDefault}}")
此外,介意差距:
@Value("${overrideProperty: defaultProperty}")
^ This space will be placed before your default value