@Autowired和Resource都是做bean注入时使用,@Resouce是原生Java的注解,
只是Spring支持该注解的注入。
1.共同点
两者都可以写在字段和setter方法上,如果用于字段上,则不用再写setter方法。
2.不同点
@Autowired
默认是byType装配依赖对象,默认情况下要求依赖对象必须存在,如果允许依赖对象为null,
则需要设置required属性为false,如果想通过byName装配,可以结合@Qualifier注解使用
public class TestServiceImpl {
@Autowired @Qualifier("userDao")
private UserDao userDao;
}
@Resource
默认是byName装配依赖对象,具有name和type属性,使用name属性,解析bean的名字,
使用byName自动注入策略,使用type属性则使用byType自动注入策略。
name、type属性都不使用时,即为默认情况,则使用byName自动注入策略。
public class TestServiceImpl {
// 下面两种@Resource只要使用一种即可
@Resource(name="userDao")
private UserDao userDao; // 用于字段上
@Resource(name="userDao")
public void setUserDao(UserDao userDao) { // 用于属性的setter方法上
this.userDao = userDao;
}
}