Sobes.tech
Назад к вопросам
Junior — Middle
92

Каким образом можно реализовать два экземпляра одного и того же сервиса в контексте Dependency Injection?

Компании, где спрашивали
СБЕРСБЕР

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

sobes.tech AI

Для реализации двух экземпляров одного и того же сервиса в контексте Dependency Injection в Java можно использовать:

  1. Именованные бины (Qualifier) — с помощью аннотации @Qualifier можно различать разные реализации или экземпляры одного интерфейса.

  2. Конфигурационные методы с разными именами — в классе конфигурации можно объявить два метода, создающих разные экземпляры сервиса.

Пример с использованием Spring и @Qualifier:

public interface MyService {
    void perform();
}

@Service
@Qualifier("serviceA")
public class MyServiceImplA implements MyService {
    public void perform() {
        System.out.println("Service A");
    }
}

@Service
@Qualifier("serviceB")
public class MyServiceImplB implements MyService {
    public void perform() {
        System.out.println("Service B");
    }
}

@Component
public class Consumer {
    private final MyService serviceA;
    private final MyService serviceB;

    public Consumer(@Qualifier("serviceA") MyService serviceA, @Qualifier("serviceB") MyService serviceB) {
        this.serviceA = serviceA;
        this.serviceB = serviceB;
    }

    public void useServices() {
        serviceA.perform();
        serviceB.perform();
    }
}

Таким образом, можно внедрить два разных экземпляра одного интерфейса и использовать их по назначению.