Spring-boot: установить значение по умолчанию для настраиваемых свойств

У меня есть класс свойств ниже в моем проекте весенней загрузки.

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

    // getter/setter
}

Теперь я хочу установить значение по умолчанию для некоторого другого свойства в моем файле application.properties для property1, Аналогично тому, что в примере ниже используется @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
}

Как сделать это, используя класс @ConfigurationProperties (довольно безопасные свойства конфигурации) при весенней загрузке, где моим значением по умолчанию является другое свойство?

2 ответа

Проверьте, было ли свойство1 установлено с помощью @PostContruct в вашем классе MyProperties. Если это не так, вы можете присвоить его другому свойству.

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

В spring-boot 1.5.10 (и, возможно, ранее) установка значения по умолчанию работает в соответствии с предложенным вами способом. Пример:

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

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

@Value default используется только если не переопределено в вашем собственном файле свойств.

Другие вопросы по тегам