Вопрос проверяет знание способов явного выбора бинов в Spring-контейнере.
Проблема решается явным указанием нужного бина. Для этого используют @Qualifier, @Primary или внедрение по имени. Также можно внедрять коллекцию бинов. Выбор способа зависит от сценария использования.
Spring предоставляет несколько механизмов для разрешения конфликтов внедрения.
Перед выбором важно понимать, какой вариант лучше подходит под задачу.
@QualifierПозволяет явно указать, какой бин должен быть внедрён.
@Autowired
@Qualifier("serviceA")
private MyService myService;
@PrimaryНазначает бин «по умолчанию».
@Primary
@Service
class ServiceA implements MyService {}
Используется, если в большинстве случаев нужен один конкретный бин.
Имя поля или параметра совпадает с именем бина.
Используется, когда нужны все реализации.
@Autowired
private List<MyService> services;
Spring предоставляет гибкие инструменты для работы с несколькими бинами одного типа, и правильный выбор подхода делает код явным и понятным.