Spring @ConditionalOnProperty аннотация работает не так, как ожидалось - PullRequest
0 голосов
/ 14 ноября 2018

У меня есть свойство, определенное внутри файла свойств: property=true

Затем у меня есть SomeClass.java класс, который должен создать компонент конфигурации свойств только если для свойства property установлено значение true.

Это мой SomeClass класс:

public class SomeClass {

  //this is the proerty which I set to true or false
  @Value("${property}")
  private String property;

  //this is the bean which needs to be created conditionally based on the property but at the moment it does not get created
  @Bean
  @ConditionalOnProperty(name="${property}", havingValue="true")
  public PropertyConfiguration propertyConfig() {
    // doesnt print anything because the bean does not get created
    System.out.print(property);
  }
}

Если я добавлю matchIfMissing = true внутри @ConditionalOnProperty, просто для экспериментаи чтобы увидеть, каково значение property, создается бин , и я вижу, что значение property равно true.

Если я удаляю matchIfMissing = true, оставьте условие как @ConditionalOnProperty(name="${property}", havingValue="true") и измените свойство property=true с true на false, боб никогда не создается (ни для true, ни для false).

Чтоя должен сделать, что бин создается условно, на основе свойства?

1 Ответ

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

Пожалуйста, добавьте @Configuration над вашим классом.

Сканирование компонентов не включает ваш класс, для этого необходимо добавить @Component или любую другую унаследованную аннотацию поверх вашего класса.Тогда ваш @Bean должен быть создан из весны.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...