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

时间:2019-06-02 03:43:04

标签: spring spring-boot

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

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

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

3 个答案:

答案 0 :(得分:0)

作为替代,您可以使用“ +”操作数。

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

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

答案 1 :(得分:0)

@PostConstruct
public void postConstruct() {
    if (StringUtils.isEmpty(testV2) {
        testV2 = testV1;
    }
}

答案 2 :(得分:0)

我认为您最好的办法是在application.properties文件中定义test.v2=${test.v1}。这样,如果您通过其他方式(例如环境变量)覆盖test.v2的值,则它将具有已定义的值,否则,它将具有test.v1的值。