Spring-boot:将默认值设置为可配置属性

时间:2015-06-17 04:49:47

标签: java properties spring-boot configurationproperty

我的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的默认值,

@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类(而不是类型安全配置属性)执行此操作,其中我的默认值是另一个属性?

2 个答案:

答案 0 :(得分:8)

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

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

答案 1 :(得分:5)

在spring-boot 1.5.10(可能更早)中,设置默认值按照建议的方式工作。例如:

@Component
@ConfigurationProperties(prefix = "myprefix")
public class MyProperties {

  @Value("${spring.application.name}")
  protected String appName;
}

@Value默认值仅在未在您自己的属性文件中覆盖时使用。