Back to questions
Aston
Junior — Middle
55
Можешь рассказать о различных типах аннотации @Conditional в Spring?
Companies where asked
Answer from AI
sobes.tech AI
Аннотация @Conditional в Spring используется для условного создания бинов в контексте приложения. Она позволяет включать или исключать определённые компоненты в зависимости от заданных условий. Основные типы и варианты использования:
-
@Conditional— базовая аннотация, принимает класс, реализующий интерфейсCondition. В этом классе описывается логика, при которой бин будет создан. -
Специализированные аннотации, основанные на
@Conditional:@ConditionalOnProperty— создаёт бин, если задано определённое свойство в конфигурации.@ConditionalOnClass— бин создаётся, если в classpath присутствует указанный класс.@ConditionalOnMissingBean— бин создаётся, если в контексте отсутствует бин определённого типа.@ConditionalOnBean— бин создаётся, если в контексте уже есть бин определённого типа.@ConditionalOnExpression— бин создаётся, если выражение SpEL возвращает true.
Пример использования @ConditionalOnProperty:
@Configuration
public class MyConfig {
@Bean
@ConditionalOnProperty(name = "feature.enabled", havingValue = "true")
public MyService myService() {
return new MyService();
}
}
Таким образом, @Conditional и её производные позволяют гибко управлять конфигурацией приложения в зависимости от окружения, наличия классов, свойств и других условий.