Sobes.tech
Junior — Middle

Какви последствия възникват, ако стартирате два бина от един и същи тип в контейнера?

sobes.tech AI

Отговор от AI

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

За да избегнете тази ситуация, можете:

  • Да използвате анотацията @Qualifier, за да посочите конкретно име на бина.
  • Да обозначите един от бините като @Primary, за да бъде избран по подразбиране.
  • Да инжектирате колекция от бинов (например, List или Map), за да получите всички екземпляри от този тип.

Пример с @Qualifier:

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

По този начин, наличието на два бина от един и същи тип изисква ясно указание кой да се използва, иначе приложението няма да стартира поради грешка в конфигурацията.