@Qualifier注解的作用是区分实现相同Interface的class
举个栗子
//bean 生产者
@Component("man")
public class man implement Love {
System.out.println("Hi girl i love you");
}
@Component("woman")
public class woman implement Love {
System.out.println("Hi boy i love you");
}
//bean消费者
@Component("LoveService")
public class LoveService {
@Autowired
private Love love;
}
上面的这个代码,编译的时候就会报NoUniqueBeanDefinitionException异常,因为有两个Love的实现,不知道该注入哪个love。
解决这个问题,可以使用@Qualifier注解
//bean 生产者
@Component("man")
public class man implement Love {
System.out.println("Hi girl i love you");
}
@Component("woman")
public class woman implement Love {
System.out.println("Hi boy i love you");
}
//bean消费者
@Component("LoveService")
public class LoveService {
@Autowired
@Qualifier
private Love love;
}
另外,bean生产者的@Component注解可以用@Qualifier注解代替,语义更清晰。