Ответ
Да, Spring поддерживает автоматическое внедрение коллекций всех бинов, реализующих заданный тип или интерфейс.
Пример внедрения списка (List):
public interface PaymentService {
void process();
}
@Service
public class CreditCardService implements PaymentService { ... }
@Service
public class PayPalService implements PaymentService { ... }
@Component
public class PaymentProcessor {
// Spring внедрит все бины типа PaymentService
@Autowired
private List<PaymentService> allServices; // Содержит CreditCardService и PayPalService
}
Ключевые моменты:
- Тип коллекции: Можно использовать
List,SetилиMap. - Управление порядком: Для упорядочивания элементов в
Listиспользуйте аннотации@Orderили@Priorityна классах-бинах. - Способ внедрения: Работает с внедрением через поле, сеттер или конструктор.
- Внедрение Map: При использовании
Map<String, PaymentService>ключом будет имя бина (по умолчанию).