@autowired和@Resource的区别

Posted television

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了@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方式进行装配;如果没有匹配,则回退为一个原始类型进行匹配,如果匹配则自动装配。

以上是关于@autowired和@Resource的区别的主要内容,如果未能解决你的问题,请参考以下文章

面试准备

Spring 注释 @Autowired 和@Resource 的区别

@Autowired和@Resource注解的区别?

@Autowired和@Resource的区别

关于@Autowired和@Resource注解区别

@Resource和@Autowired的区别