首先看一下这两个标签分别是什么作用:@Primary:自动装配时当出现多个Bean候选者时,被注解为@Primary的Bean将作为首选者,否则将抛出异常 。
@Autowired @Qualifier(“personDaoBean”) 存在多个实例配合使用。
当一个接口有多个不同实现时,使用@Autowired注解时会报org.springframework.beans.factory.NoUniqueBeanDefinitionException异常信息,此时怎么解决呢?
1:使用@primary标签,标识一个实例,再使用@Autowired即可
2:如果要区分,则在不同的实例上加入@Qualifier标签,加以区分
实际应用中例子:
1:同一个方法,不同的参数,两个实例:
@primary
@Qualifer("b1")
@Bean
@LoadBalance
User biguser(){
return new User (username1,userage1);
}
@Qualifer("b2")
@Bean
@LoadBalance
User biguser(){
return new User (username2,userage2);
}
2:现在想要调用不同的参数的实例:
@Autowired
private User user1;
@Qualifer("b2")
@Autowired
private User user2;
Public T returnuser1(){
T newt = user1.getusername();
return newt;
}
Public T returnuser2(){
T newt = user2.getusername();
return newt;
}
在实际使用中,根据@Qualifer("b2")标签,可以灵活的调用不同参数的实例