Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Задачи

Войти

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

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

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Spring: spring, bean

Что произойдёт, если в контейнере Spring есть два бина одного типа?

Вопрос проверяет понимание механизма внедрения зависимостей в Spring и разрешения неоднозначностей.

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

Если в контейнере Spring есть два бина одного типа, при автосвязывании по типу возникнет ошибка. Spring не сможет однозначно выбрать, какой бин внедрять. В результате приложение не запустится. Для решения проблемы требуется явное указание нужного бина.

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

В Spring внедрение зависимостей чаще всего происходит по типу, и наличие нескольких бинов одного типа приводит к конфликту.

Что происходит внутри Spring

Spring пытается найти ровно один бин, подходящий по типу зависимости.

Если найдено больше одного:

  • Возникает NoUniqueBeanDefinitionException

  • Контекст приложения не инициализируется

Пример ситуации:

@Service
class ServiceA implements MyService {}

@Service
class ServiceB implements MyService {}
@Autowired
private MyService myService; // неоднозначность

Почему это считается ошибкой

Spring не может угадать бизнес-логику:

  • Какую реализацию выбрать

  • В каком сценарии она используется

Поэтому выбор должен быть явным.

Вывод

Наличие нескольких бинов одного типа без явного указания приводит к ошибке запуска, что защищает приложение от неявного и ошибочного поведения.

Уровень

  • Рейтинг:

    5

  • Сложность:

    6

Навыки

  • Spring

    Spring

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

#spring

#bean

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