Вопрос проверяет понимание механизмов разрешения зависимостей и работы Spring с коллекциями бинов.
Да, Spring умеет внедрять коллекции бинов одного типа. Можно заинжектить List, Set или Map. Spring найдёт все бины, подходящие по типу. При необходимости можно управлять выбором через @Qualifier, @Primary и @Order. Это стандартный механизм контейнера.
Spring поддерживает автоматическое внедрение нескольких бинов сразу, что часто используется для расширяемых архитектур.
Когда Spring видит зависимость вида List<T>, он:
Сканирует контекст
Находит все бины типа T
Собирает их в коллекцию
Внедряет в точку инъекции
Пример:
@Component
class ProcessorChain {
private final List<Processor> processors;
public ProcessorChain(List<Processor> processors) {
this.processors = processors;
}
}
Spring умеет внедрять:
List<T>
Set<T>
Map<String, T> — ключом будет имя бина
Если бинов много, можно управлять отбором.
@Qualifier@Qualifier("fast")
@PrimaryИспользуется при выборе одного бина, но не для списков напрямую.
@Order / OrderedПозволяет управлять порядком элементов в списке.
@Order(1)
@Component
class FirstProcessor implements Processor {}
Внедрение коллекций — мощный механизм для построения цепочек обработчиков и плагинных систем. Spring сам определяет состав по типу бинов.