Установка порядка впрыскивания значений из свойств в Spring Boot для @Value - PullRequest
0 голосов
/ 28 ноября 2018

У меня вопрос по настройке порядка внедрения аннотации @Value.Я пытался с @Order, но для этого случая это не работает.Почему я спрашиваю об этом?Потому что некоторые значения зависят от других.Я могу сделать больше логики в @PostConstructor, но, если существует какое-либо решение для контроля порядка, это будет полезно для меня.

Для пояснения, пример, который не работает:

@Value("${first}")
@Order(1)
public void setFirst(boolean first) {
    FIRST = first;
}

@Value("${second}")
@Order(2)
public void setSecond(String second) {
    SECOND = second;
    if(first){
        //do something
    }
}

Ответы [ 2 ]

0 голосов
/ 28 ноября 2018

Вы можете использовать класс Environment, чтобы получить значение, если что-то допустимо.Например:

@Autowired
private Environment env;  

@Value("${first}")
public void setFirst(boolean first) {
      FIRST = first;
      if (FIRST) 
         SECOND = env.getProperty("second");
}
0 голосов
/ 28 ноября 2018

Кажется, что у вас есть две глобальные переменные, такие как

private boolean FIRST;
private String SECOND;

Тогда вы можете добиться этого следующим образом:

@Value("${first}")
public void setFirst(boolean first) {
    FIRST = first;
}

@Value("${second}")
public void setSecond(String second) {
    SECOND = second;
    if(FIRST){
        //do something
    }
}
...