Назад к вопросам
СБЕР
Junior — Middle
75
Какие последствия возникают, если запустить два бина одинакового типа в контейнере?
Компании, где спрашивали
Ответ от нейросети
sobes.tech AI
Если в Spring-контейнере объявлены два бина одного типа без дополнительной квалификации, при попытке автосвязывания (например, через @Autowired) возникнет ошибка из-за неоднозначности — контейнер не сможет определить, какой бин внедрять.
Чтобы избежать этой ситуации, можно:
- Использовать аннотацию @Qualifier для указания конкретного имени бина.
- Назначить один из бинов как @Primary, чтобы он выбирался по умолчанию.
- Внедрять коллекцию бинов (например, List или Map), чтобы получить все экземпляры данного типа.
Пример с @Qualifier:
@Autowired
@Qualifier("beanName")
private MyService myService;
Таким образом, наличие двух бинов одного типа требует явного указания, какой из них использовать, иначе приложение не запустится из-за ошибки конфигурации.