Sobes.tech
Junior — Middle
111

Cum se face injecția de dependență în Spring pentru un câmp specific al unei interfețe, dacă are două implementări?

Companiile au fost întrebate
ITFB Group

Răspuns de la AI

sobes.tech AI

В Spring, если у интерфейса есть две реализации, и нужно внедрить зависимость по конкретному полю, можно использовать аннотацию @Qualifier для указания, какую именно реализацию нужно внедрить.

Пример:

public interface Service {
    void execute();
}

@Service
@Qualifier("serviceA")
public class ServiceA implements Service {
    public void execute() { /* реализация A */ }
}

@Service
@Qualifier("serviceB")
public class ServiceB implements Service {
    public void execute() { /* реализация B */ }
}

@Component
public class Client {
    private final Service service;

    @Autowired
    public Client(@Qualifier("serviceA") Service service) {
        this.service = service;
    }
}

Таким образом, с помощью @Qualifier можно явно указать, какую реализацию внедрять, если их несколько.