spring @Autowired 有多个类对象与变量类型匹配的解决方法(不推荐)

问题描述

在 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 成功!

原文出处:/show_1IXU12G5HMl.html