Spring @Qualifier注解

原创转载请注明出处:http://agilestyle.iteye.com/blog/2330133

 

考虑一个如下的场景:如图所示,两个Invoice的Service实现同一个接口,在Resource下调用两个服务的话,需要使用@Qualifier注解来确保注入的Bean是唯一的。
Spring @Qualifier注解

IBatchApprovalService.java

public interface IBatchApprovalService {
    ...
}

 

IInvoiceApprovalService.java

public interface IInvoiceApprovalService {
    ...
}

 

PaymentBatchApprovalService.java

@Service
public class PaymentBatchApprovalService implements IBatchApprovalService {
    ...
}

 

InvoiceDetailApprovalService.java

@Service("invoiceDetailApprovalService")
public class InvoiceDetailApprovalService implements IInvoiceApprovalService {
    ...
}

 

InvoiceHeaderApprovalService.java

@Service("invoiceHeaderApprovalService")
public class InvoiceHeaderApprovalService implements IInvoiceApprovalService {
    ...
}

 

PaymentApprovalResource.java

@Component
@Scope("request")
@Path("/payment_approval")
public class PaymentApprovalResource {
    ...
    @Inject
    @Qualifier("invoiceDetailApprovalService")
    private IInvoiceApprovalService invoiceDetailApprovalService;
    
    @Inject
    @Qualifier("invoiceHeaderApprovalService")
    private IInvoiceApprovalService invoiceHeaderApprovalService;

    @Inject
    private IBatchApprovalService paymentBatchApprovalService;
    
}