У меня есть свойство, определенное в файле свойств: 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 создается условно на основе свойства?




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