@autowired和@resource的区别

@Autowired和@Resource的区别
1. @Autowired与@Resource都可以用来装配bean. 都可以写在字段上,或写在setter方法上。

@Autowired

private UserDao  userDao;//用于字段上

@Autowired

public void setUserDao(UserDao userDao) {//用于属性的setter方法上

     this.userDao= userDao;



@Resource(name=“userDao”)

private UserDao  userDao;//用于字段上

@Resource(name=“userDao”)

public void setUserDao(UserDao userDao) {//用于属性的setter方法上

     this.userDao= userDao;

}
 

2.@Autowired默认按byType注入,byName需要与@Qualifier("对象名")连用

@Resource同时支持byType和byName注入,默认按byName注入,如果默认情况下找不到就按类型找(name属性解析为bean的名字,而type属性则解析为bean的类型)

//按类型匹配:按默认的userDao变量名去容器中找同名的引用变量,如果有就注入
@Autowired
private UserDao userDao;


//精确按照手动指定的名称注入,如果名称不匹配就报异常,不会用类型注入
@Autowired@Qualifier("userDao")//精确按照名称注入,
private UserDao userDao;






//name="userDao" 拿手动指定的name的值是userDao作为对象的名字去spring容器中寻找同名的引用变量,有就注入
@Resource(name="userDao")
private UserDao userDao;


//@Resource中没有写name属性,拿默认的属性/变量的名字userDao 去spring容器中寻找,有就注入
@Resource
private UserDao userDao;


//有name就直接匹配name的值,如果匹配不上拿属性名称寻找,如果属性名称找不到按类型匹配
@Resource
private UserDao userDao111;
 

3.@Autowired是spring提供的注释,@Resource是JAVA2EE提供的

posted @ 2019-08-08 10:14  觅路  阅读(225)  评论(0编辑  收藏  举报