Junior — Middle
Какви последствия възникват, ако стартирате два бина от един и същи тип в контейнера?
sobes.tech AI
Отговор от AI
Ако в контейнера на Spring са обявени два бина от един и същи тип без допълнителна квалификация, при опит за автоматично свързване (например чрез @Autowired) ще възникне грешка поради неяснота — контейнерът няма да може да определи кой бин да инжектира.
За да избегнете тази ситуация, можете:
- Да използвате анотацията @Qualifier, за да посочите конкретно име на бина.
- Да обозначите един от бините като @Primary, за да бъде избран по подразбиране.
- Да инжектирате колекция от бинов (например, List или Map), за да получите всички екземпляри от този тип.
Пример с @Qualifier:
@Autowired
@Qualifier("beanName")
private MyService myService;
По този начин, наличието на два бина от един и същи тип изисква ясно указание кой да се използва, иначе приложението няма да стартира поради грешка в конфигурацията.