Java 弹簧值注释默认为表达式?

Java 弹簧值注释默认为表达式?,java,spring,Java,Spring,在文件中考虑以下属性 defaultProperty="default" overrideProperty="override" 我有一个类,它首先需要检查overrideeproperty是否可用并使用它,否则返回defaultProperty 我试着这样做 MyClass { @Value("${overrideProperty: defaultProperty}") String tokenizationAlgorithm; } 这不起作用,因为我得到的是defaultPrope

文件中考虑以下属性

defaultProperty="default"
overrideProperty="override"
我有一个类,它首先需要检查
overrideeproperty
是否可用并使用它,否则返回
defaultProperty

我试着这样做

MyClass {

 @Value("${overrideProperty: defaultProperty}")
 String tokenizationAlgorithm;
}
这不起作用,因为我得到的是
defaultProperty
not
default
(这是值)


如何将表达式放入
@value
注释的默认值部分?

使用以下语法:

@Value("${overrideProperty:${defaultProperty}}")
${overrideProperty:${defaultProperty}}
将传递给的方法,该方法将用相应的值替换格式为
${name}
的所有占位符

请注意,由于方法的递归性质,
${defaultProperty}
值将在
${overrideProperty}
之前解析。因此,即使提供了
${overrideProperty}
,也应该始终有一个默认值可用。此外,您还可以为默认值提供默认值

@Value("${overrideProperty:${defaultProperty:literallyDefault}}")
此外,请注意差距:


您是否尝试过
@Value(${overrideProperty:${defaultProperty}}”)
?默认值之前的空格不是必需的,它也可以在没有空格的情况下工作space@sanjeevjha我知道这不是强制性的,但它会在实际值之前预先添加一个不需要的空格,例如“某物”会变成“某物”。
@Value("${overrideProperty: defaultProperty}")
                           ^ This space will be placed before your default value