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 используется только если не переопределено в вашем собственном файле свойств.