Назад к вопросам
СБЕР
Junior — Middle
92
Каким образом можно реализовать два экземпляра одного и того же сервиса в контексте Dependency Injection?
Компании, где спрашивали
Ответ от нейросети
sobes.tech AI
Для реализации двух экземпляров одного и того же сервиса в контексте Dependency Injection в Java можно использовать:
-
Именованные бины (Qualifier) — с помощью аннотации
@Qualifierможно различать разные реализации или экземпляры одного интерфейса. -
Конфигурационные методы с разными именами — в классе конфигурации можно объявить два метода, создающих разные экземпляры сервиса.
Пример с использованием 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();
}
}
Таким образом, можно внедрить два разных экземпляра одного интерфейса и использовать их по назначению.