Junior — Middle
146
¿Cómo se puede implementar dos instancias del mismo servicio en el contexto de la inyección de dependencias?
Empresas donde se preguntó
Respuesta de la IA
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();
}
}
Таким образом, можно внедрить два разных экземпляра одного интерфейса и использовать их по назначению.