Въпросът ми вече беше зададен тук в следната връзка.
Spring: Защо да автоматично свързваме интерфейса, а не внедрения клас?
Какво искам да знам, ако използваме @Qualifier
за инжектиране на bean, отколкото каква е целта на автоматичното свързване на интерфейс?? Защо не свържем автоматично същия клас на изпълнение??
Чрез автоматично свързване на интерфейс искаме да се възползваме от полиморфизма по време на изпълнение, но това не се постига, ако следваме подхода на @Qualifier
. Моля, предложете ми стандартен начин.
Следва простият код, ако го направя без пружина. Чудя се как пролетта ще инжектира екземпляра PrepaidPaymentService и екземпляра PostPaidPaymentService??
public interface PaymentService{
public void processPayment();
}
public class PrepaidPaymentService implements PaymentService{
public void processPayment(){
System.out.println("Its Prepaid Payment Service");
}
}
public class PostPaidPaymentService implements PaymentService{
public void processPayment(){
System.out.println("Its Postpaid Payment Service");
}
}
public class Test {
public PaymentService service;
public static void main(String[] args) {
Test test = new Test();
int i = 1;
if(i ==1 ){
test.setService(new PrepaidPaymentService());
test.service.processPayment();
}
i = 2;
if(i == 2){
test.setService(new PostPaidPaymentService());
test.service.processPayment();
}
}
public void setService(PaymentService service){
this.service = service;
}
}