Sobes.tech
Назад к вопросам
Junior — Middle
75

Какие последствия возникают, если запустить два бина одинакового типа в контейнере?

Компании, где спрашивали
СБЕРСБЕР

Ответ от нейросети

sobes.tech AI

Если в Spring-контейнере объявлены два бина одного типа без дополнительной квалификации, при попытке автосвязывания (например, через @Autowired) возникнет ошибка из-за неоднозначности — контейнер не сможет определить, какой бин внедрять.

Чтобы избежать этой ситуации, можно:

  • Использовать аннотацию @Qualifier для указания конкретного имени бина.
  • Назначить один из бинов как @Primary, чтобы он выбирался по умолчанию.
  • Внедрять коллекцию бинов (например, List или Map), чтобы получить все экземпляры данного типа.

Пример с @Qualifier:

@Autowired
@Qualifier("beanName")
private MyService myService;

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