谈谈Spring中@Autowired和@Resource注解的区别

Java面试 潘老师 8个月前 (09-06) 175 ℃ (0) 扫码查看

 

Java面试题:谈谈Spring中@Autowired和@Resource注解的区别

得分点

注解来源、注入方式

标准回答:

1)@Autowired是Spring提供的注解,@Resource是JDK提供的注解。

2)@Autowired只能按类型注入,@Resource默认按名称注入,也支持按类型注入。

3)@Autowired按类型装配依赖对象,默认情况下要求依赖对象必须存在。如果允许null值,可以设置其required属性为false。如果想按名称装配,可以结合@Qualifier注解一起使用。@Resource有两个重要的属性:name和type。name属性指定按名称装配,如果没有指定name属性,当注解标注在字段上时,默认取字段的名称作为bean名称寻找依赖对象;当注解标注在属性的setter方法上时,默认取属性名作为bean名称寻找依赖对象。

加分回答

@Resource装配顺序:

  1. 如果同时指定了name和type属性,Spring会从上下文中找到唯一匹配的bean进行装配,找不到则抛出异常。
  2. 如果指定了name属性,Spring会从上下文中查找名称(id)匹配的bean进行装配,找不到则抛出异常。
  3. 如果指定了type属性,Spring会从上下文中找到类型匹配的唯一bean进行装配,找不到或找到多个都会抛出异常。
  4. 如果既没有指定name属性又没有指定type属性,Spring会自动按照byName方式进行装配。如果没有匹配,则回退为一个原始类型进行匹配,如果匹配则自动装配。

版权声明:本站文章,如无说明,均为本站原创,转载请注明文章来源。如有侵权,请联系博主删除。
本文链接:https://www.panziye.com/javainterview/8806.html
喜欢 (0)
请潘老师喝杯Coffee吧!】
分享 (0)
用户头像
发表我的评论
取消评论
表情 贴图 签到 代码

Hi,您需要填写昵称和邮箱!

  • 昵称【必填】
  • 邮箱【必填】
  • 网址【可选】