Встречается на собеседованиях • сегодня

Что будет, если инжектить по полю интерфейс, у которого есть две реализации в Spring

Spring выбросит исключение NoUniqueBeanDefinitionException, так как не сможет определить, какую именно реализацию инжектить. Для решения проблемы нужно:

  1. Использовать @Qualifier для указания конкретного бина:
java
@Autowired
@Qualifier("firstImpl")
private MyInterface myService;
  1. Пометить одну из реализаций @Primary - она будет выбрана по умолчанию:
java
@Primary
@Component
public class FirstImpl implements MyInterface {...}
  1. Использовать @Resource(name = "beanName") вместо @Autowired

  2. Создать фабричный метод с @Bean, возвращающий нужную реализацию

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы