Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Spring: Spring, @Conditional, conditional bean, Java configuration

Для чего используется @Conditional?

Проверяет понимание механизма условного создания бинов в Spring с помощью аннотации @Conditional.

Короткий ответ

Аннотация @Conditional в Spring позволяет создавать бины только при выполнении определённого условия. Условие задаётся классом, реализующим интерфейс Condition. Это удобно для включения или отключения компонентов в зависимости от окружения, наличия других бинов или свойств конфигурации.

Длинный ответ

Что такое @Conditional?

Аннотация @Conditional — это механизм Spring, который позволяет управлять созданием бинов на основе произвольных условий. Она применяется к методам @Bean или классам конфигурации. Если условие не выполняется, бин не создаётся, что даёт гибкость в настройке приложения под разные среды.

Как это работает?

Для использования нужно создать класс, реализующий интерфейс Condition (из пакета org.springframework.context.annotation). В методе matches возвращается true или false. Затем аннотация @Conditional принимает этот класс как параметр.

public class DevCondition implements Condition {
    @Override
    public boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata) {
        String env = context.getEnvironment().getProperty("app.env");
        return "dev".equals(env);
    }
}

@Configuration
public class AppConfig {
    @Bean
    @Conditional(DevCondition.class)
    public DataSource devDataSource() {
        return new EmbeddedDatabaseBuilder().build();
    }
}

Где применяется?

  • Подключение разных реализаций сервисов для разработки и продакшена.
  • Включение тестовых заглушек или мониторинга только в определённых профилях.
  • Условное создание бинов на основе наличия классов в classpath (например, через @ConditionalOnClass в Spring Boot).

Вывод

Используйте @Conditional, когда нужно динамически управлять конфигурацией Spring-приложения без изменения кода, особенно в многопрофильных средах или при создании библиотек с опциональными компонентами.

Уровень

  • Рейтинг:

    4

  • Сложность:

    5

Навыки

  • Spring

    Spring

Ключевые слова

#Spring

#@Conditional

#conditional bean

#Java configuration

Подпишись на Java Developer в телеграм