问题描述
在 spring容器中,如果有多个 bean对象类型,与要注入的 变量类型 匹配,会报错,见:
https://www.malaoshi.top/show_1IX243u3GHh.html#例子:有多个匹配
解决
当 要注入的 变量名 与 spring容器中的 id匹配 时, 进行注入
下面根据 https://www.malaoshi.top/show_1IX243u3GHh.html#例子:有多个匹配 进行改造
注入 UserDao 类对象
由于 UserSrvImpl 要注入的 变量名是 dao ,所以要将 UserDao类对象 注入,要修改 UserDao类的@Repository,改成:@Repository("dao")
@Repository("dao")
public class UserDao implements IUserDao {
public UserDao(){
System.out.println("UserDao默认构造方法!");
}
public void save(String username,String password){
System.out.println("UserDao 保存 "+username+","+password+" 成功!");
}
}
执行
UserDao默认构造方法!
UserDao2默认构造方法!
UserSrvImpl构造方法
UserDao 保存 lilei,123456 成功!
spring IoC-注解依赖注入(@Autowired)图解(有多个类型匹配)
修改成员变量
如果 不想修改 UserDao类的@Repository注解中的value属性,那么就要修改 UserSrvImpl 的 dao变量
要注入 UserDao2 类对象
@Service
public class UserSrvImpl implements IUserService {
@Autowired
private IUserDao userDao2;
public UserSrvImpl(){
System.out.println("UserSrvImpl构造方法");
}
public void save(String username,String password){
userDao2.save(username,password);
}
}
执行
UserDao默认构造方法!
UserDao2默认构造方法!
UserSrvImpl构造方法
UserDao2 保存 lilei,123456 成功!