我的spring-boot项目中下面有一个属性类。

@Component
@ConfigurationProperties(prefix = "myprefix")
public class MyProperties {
    private String property1;
    private String property2;

    // getter/setter
}

现在,我想在property1的application.properties文件中将默认值设置为其他属性。与下面的示例使用@Value相似
@Value("${myprefix.property1:${somepropety}}")
private String property1;

我知道我们可以分配静态值,就像下面的示例一样,其中property的默认值是“default value”,
@Component
@ConfigurationProperties(prefix = "myprefix")
public class MyProperties {
    private String property1 = "default value"; // if it's static value
    private String property2;

    // getter/setter
}

在我的默认值是另一个属性的情况下,如何在Spring Boot中使用@ConfigurationProperties类(而不是typesafe配置属性)来执行此操作?

最佳答案

检查是否在MyProperties类中使用@PostContruct设置了property1。如果不是,则可以将其分配给另一个属性。

@PostConstruct
    public void init() {
        if(property1==null) {
            property1 = //whatever you want
        }
    }

10-08 13:40