Hands-On High Performance with Spring 5
上QQ阅读APP看书,第一时间看更新

The @Qualifier annotation

Handling multiple autowire candidates with @Primary is more effective when only one primary candidate can be determined for multiple autowire candidates. The @Qualifier annotation gives you more control over the selection process. It allows you to give a reference associated with a specific bean type. That reference can be used to qualify the dependency that needs to be autowired. Let's look at the following code:

@Component
public class AccountService implements CustomerService {

}
@Component
@Qualifier("BankingService")
public class BankingService implements CustomerService {

}

@Component
public class SomeService {

private CustomerService customerService;

@Autowired
@Qualifier("bankingservice")
public BankingService(CustomerService customerService) {
this.customerService = customerService;
}
.....
}

In the previous example, there are two customer services available: BankingService and AccountService; however, due to @Qualifier("bankingservice") being used in the SomeService class, BankingService will be selected for auto wiring.