Senior
50
Ce se întâmplă la pornirea aplicației dacă mai mulți beans sunt potriviți pentru un singur tip?
Companiile au fost întrebate
Позитив Технолоджис
Răspuns de la AI
sobes.tech AI
Если при старте Spring-приложения несколько бинов подходят для внедрения по одному типу (например, интерфейсу), то возникнет конфликт, и контекст не сможет однозначно выбрать, какой бин использовать. В результате приложение выбросит исключение NoUniqueBeanDefinitionException.
Чтобы решить эту проблему, можно:
- Использовать аннотацию
@Primaryна одном из бинов, чтобы указать предпочтительный. - Внедрять бин по имени с помощью
@Qualifier. - Пересмотреть дизайн, чтобы избежать неоднозначности.
Пример:
@Component
@Primary
public class ServiceImpl1 implements MyService {}
@Component
public class ServiceImpl2 implements MyService {}
// Внедрение
@Autowired
private MyService myService; // будет внедрен ServiceImpl1