@Value是否支持让默认值引用另一个@Value?


@Value("${test.v1:hello}")
private String testV1;
@Value("${test.v2:${test.v1}}")
private String testV2;

当未配置 test.v2 时,我希望 testV2 与 testV1 相同。@Value是否支持让默认值引用另一个@Value?

我认为你能做的最好的事情就是在你的application.properties文件中定义test.v2=${test.v1}。这样,如果您通过环境变量等其他方式覆盖 test.v2 的值,它将具有定义的值,否则,它将具有 test.v1 值。

作为替代方法,您可以使用"+"操作数。

@Value("${test.v1:hello}")
private String testV1;
@Value("${test.v2:}" + "${test.v1}")
private String testV2;
@PostConstruct
public void postConstruct() {
    if (StringUtils.isEmpty(testV2) {
        testV2 = testV1;
    }
}

相关内容

最新更新