Sobes.tech
Назад к вопросам
Senior
6

Как Spring инжектирует все реализации интерфейса в сервис?

Компании, где спрашивали
EXPERA

Ответ от нейросети

sobes.tech AI

Spring может инжектировать все реализации интерфейса в сервис с помощью коллекций, например, List или Set. Для этого в сервисе объявляют поле или параметр конструктора с типом коллекции интерфейса, и Spring автоматически подставит все бины, реализующие этот интерфейс.

Пример:

@Service
public class MyService {
    private final List<MyInterface> implementations;

    public MyService(List<MyInterface> implementations) {
        this.implementations = implementations;
    }

    public void doWork() {
        for (MyInterface impl : implementations) {
            impl.execute();
        }
    }
}

Здесь Spring найдет все бины, реализующие MyInterface, и передаст их в конструктор в виде списка. Это удобно для плагинов или расширяемых компонентов.