Sobes.tech
Back to questions
Junior — Middle
55

Можешь рассказать о различных типах аннотации @Conditional в Spring?

Companies where asked
AstonAston

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 и её производные позволяют гибко управлять конфигурацией приложения в зависимости от окружения, наличия классов, свойств и других условий.