Junior — Middle
Quais são as consequências de iniciar dois beans do mesmo tipo no contêiner?
sobes.tech IA
Resposta da IA
Если в Spring-контейнере объявлены два бина одного типа без дополнительной квалификации, при попытке автосвязывания (например, через @Autowired) возникнет ошибка из-за неоднозначности — контейнер не сможет определить, какой бин внедрять.
Чтобы избежать этой ситуации, можно:
- Использовать аннотацию @Qualifier для указания конкретного имени бина.
- Назначить один из бинов как @Primary, чтобы он выбирался по умолчанию.
- Внедрять коллекцию бинов (например, List или Map), чтобы получить все экземпляры данного типа.
Пример с @Qualifier:
@Autowired
@Qualifier("beanName")
private MyService myService;
Таким образом, наличие двух бинов одного типа требует явного указания, какой из них использовать, иначе приложение не запустится из-за ошибки конфигурации.