- autowire是通过类型来依赖注入
@Repository("dog1")
public class Dog {
private String name;
}
public class Hello {
private String name;
@Autowired
private Dog dog;
}
虽然@Repository将Dog注解为dog1,但是在Hello中是通过Dog类型来依赖注入的,所以和dog1没有关系
- @resource是通过名称来依赖注入
@Repository("dog1")
public class Dog {
private String name;
}
public class Hello {
private String name;
@Resource
private Dog dog;
}
此时@resource注解通过属性Dog的名称dog来找依赖,而Dog类在Bean中的名称是dog1,所以会失败
解决方法1:将private Dog dog改为private Dog dog1
解决方法2:将Dog类的Bean注解@Repository("dog1")改为@Repository("dog")