Junior — Middle
152
Cum se pot implementa două exemplare ale aceluiași serviciu în contextul Injectării de Dependințe?
Companiile au fost întrebate
Răspuns de la AI
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();
}
}
Таким образом, можно внедрить два разных экземпляра одного интерфейса и использовать их по назначению.