2015-06-17 6 views
12

У меня есть класс свойств ниже в моем проекте загрузки весной.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 (а скорее тип конфигурации конфигурации) весной загрузки, где мое значение по умолчанию - другое свойство?

+0

Пожалуйста, рассмотрите этот вопрос: [http://stackoverflow.com/questions/29220498/why-is-configurationproperties-not-overriding-defaults-in-my-case](http://stackoverflow. com/questions/29220498/why-is-configurationproperties-not-overriding-defaults-in-my-case) –

ответ

5

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

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

Это решило мою проблему пока. Но, я думаю, весна должна поддерживать ту же поддержку, что и @Value. –

+0

Я искал, как устанавливать значения по умолчанию, и это был единственный ответ, который я мог найти .. но [на этой вики] (https://github.com/spring-projects/spring-boot/wiki/Spring-Boot- Configuration-Binding # default-value), похоже, вы можете установить значение по умолчанию для своего свойства, как и следовало ожидать. – evandongen