Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Войти

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

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

© 2026 YeaHub

Документы

Медиа

Назад
Вопрос про Spring: conditional

Что делает @ConditionalOnMissingBean?

Вопрос проверяет понимание условной конфигурации в Spring Boot и механизмов автоконфигурации.

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

@ConditionalOnMissingBean указывает Spring создавать бин только если в контексте ещё нет бина нужного типа. Аннотация активно используется в автоконфигурациях Spring Boot. Она позволяет переопределять стандартные бины своими реализациями. Это делает конфигурацию гибкой и расширяемой без изменения фреймворка.

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

Определение

@ConditionalOnMissingBean — это условие, при котором бин регистрируется только при отсутствии другого подходящего бина в контексте.

Где и зачем используется

Основной сценарий — Spring Boot autoconfiguration:

  • фреймворк предлагает бин «по умолчанию»

  • разработчик может объявить свой бин

  • стандартный бин не будет создан

Пример

@Bean
@ConditionalOnMissingBean
public ObjectMapper objectMapper() {
    return new ObjectMapper();
}

Если разработчик объявит свой ObjectMapper, этот бин:

  • не будет создан

  • не приведёт к конфликту

По каким критериям ищется бин

Аннотация может проверять:

  • тип бина

  • имя бина

  • аннотацию

@ConditionalOnMissingBean(name = "dataSource")

Почему это важно

  • упрощает расширение фреймворка

  • устраняет необходимость отключать автоконфигурации

  • поддерживает принцип «разумные значения по умолчанию»

Вывод

@ConditionalOnMissingBean — ключевой инструмент Spring Boot, позволяющий безопасно переопределять стандартные бины и управлять автоконфигурацией.

Уровень

  • Рейтинг:

    4

  • Сложность:

    6

Навыки

  • Spring

    Spring

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

#conditional

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