Назад к вопросам
Senior
8
Что произойдёт при старте приложения, если несколько бинов подходит для одного типа?
Компании, где спрашивали
Позитив Технолоджис
Ответ от нейросети
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