@autowired和@Resource的区别

相同点:

  二者都是用来自动装配bean的,都可以写在字段上或者写在setter方法上,如果写在字段上就可以不用谢setter上。@Resource并不是spring的注解,但是spring支持该注解导入。他是javax.annotation.Resource包下的,需要导入。

 

不同点:

  1、@Autowired注解为spring下的注解,默认使用bytype方式来注入字段。通过查找字段类型所匹配的bean来注入。如果允许null值,可以设置它的required属性为false如果我们想使用按照名称(byName)来装配,可以结合@Qualifier注解一起使用。(大多放在字段上,少放在setter上)

  

  2、@Resource注解默认使用byName注入,还有个参数是byType,可以两个参数都写,写了的话就找唯一的类型的唯一名字的字段;如果仅仅指定了名字,就找名字相符的,如果找到多个或者没找到就报错;如果仅仅指定了类型,就找类型相符的,如果找到多个或者没找到就报错;如果都没指定,自动按照byName方式进行装配;如果没有匹配,则回退为一个原始类型进行匹配,如果匹配则自动装配。

posted @ 2018-08-14 20:03  彩电  阅读(212)  评论(0编辑  收藏  举报