Аннотация Spring @ConditionalOnProperty не работает должным образом

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

Затем у меня есть класс SomeClass.java, который должен создает bean-объект конфигурации свойства Только, если для свойства 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, тогда создается bean-компонент делает, и я вижу, что значение property равно true.

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

Что мне делать s.t. bean создается условно на основе свойства?

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
4
0
11 313
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

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

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

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