1、引言
上篇文章我们讲了@Autowired的作用🍀
其中,如果同一个类对应多个对象时
⭐@Autowired会先根据名称来获取,如果获取到了,正确响应
⭐如果没有获取到,就根据类型匹配,此时,如果匹配到多个,报错
为了解决同一类对应多个对象的问题,我们引入@Primary,@Qualifier,@Resource注解🌟
2、@Primary注解
@Component
public class BeanInfo {
@Primary
@Bean
public UserInfo userInfo1(){
UserInfo userInfo = new UserInfo();
userInfo.setId(1);
userInfo.setName("zhangsan");
userInfo.setAge(1);
return userInfo;
}
@Bean
public UserInfo userInfo2(){
UserInfo userInfo = new UserInfo();
userInfo.setId(2);
userInfo.setName("lisi");
userInfo.setAge(2);
return userInfo;
}
}
@Controller
public class UserController {
@Autowired
private UserInfo userInfo;
public void sayHi(){
System.out.println("Hi,controller");
System.out.println(userInfo);
}
}
3、 @Qualifier注解
@Controller
public class UserController {
@Qualifier("userInfo2")
@Autowired
private UserInfo userInfo;
public void sayHi(){
System.out.println("Hi,controller");
System.out.println(userInfo);
}
}
4、 @Resource注解
@Controller
public class UserController {
@Resource(name = "userInfo2")
private UserInfo userInfo;
public void sayHi(){
System.out.println("Hi,controller");
System.out.println(userInfo);
}
}