相同点:

@Resource的作用相当于@Autowired,均可标注在字段或属性的setter方法上。

不同点:

(1)提供方:@Autowired是由org.springframework.beans.factory.annotation.Autowired提供,换句话说就是由Spring提供;@Resource是由javax.annotation.Resource提供,即J2EE提供,需要JDK1.6及以上。

(2)注入方式:@Autowired只按照byType 注入;@Resource默认按byName自动注入,也提供按照byType 注入;

(3)属性:@Autowired按类型装配依赖对象,默认情况下它要求依赖对象必须存在,如果允许null值,可以设置它required属性为false。如果我们想使用按名称装配,可以结合@Qualifier注解一起使用。@Resource有两个中重要的属性:name和type。name属性指定byName,如果没有指定name属性,当注解标注在字段上,即默认取字段的名称作为bean名称寻找依赖对象,当注解标注在属性的setter方法上,即默认取属性名作为bean名称寻找依赖对象。需要注意的是,@Resource如果没有指定name属性,并且按照默认的名称仍然找不到依赖对象时, @Resource注解会回退到按类型装配。但一旦指定了name属性,就只能按名称装配了。

@Resource装配顺序

1. 如果同时指定了name和type,则从Spring上下文中找到唯一匹配的bean进行装配,找不到则抛出异常

2. 如果指定了name,则从上下文中查找名称(id)匹配的bean进行装配,找不到则抛出异常

3. 如果指定了type,则从上下文中找到类型匹配的唯一bean进行装配,找不到或者找到多个,都会抛出异常

4. 如果既没有指定name,又没有指定type,则自动按照byName方式进行装配;如果没有匹配,则回退为一个原始类型进行匹配,如果匹配则自动装配;

推荐使用@Resource注解在字段上,这样就不用写setter方法了.并且这个注解是属于J2EE的,减少了与Spring的耦合,这样代码看起就比较优雅 。

Spring中 @Autowired注解与@Resource注解的区别相关推荐

  1. Spring中@Autowired、@Qualifier、@Resource的区别

    转自: Spring中@Autowired.@Qualifier.@Resource的区别_老周聊架构的博客-CSDN博客_qualifier和resource区别1.@Autowired@Autow ...

  2. Spring中解决事务以及异步注解失效

    Spring中解决事务以及异步注解失效 一.重现@Transaction失效的场景 有如下业务场景,新增订单后,自动发送短信,下面的代码在同一个类中: @Transaction public void ...

  3. java为什么引入注解_说说Spring中为何要引入Lookup注解

    前言 我们先探一探官方文档关于Method Injection的章节是怎么说的: In most application scenarios, most beans in the container ...

  4. java中factory_Java后台面试--Spring中FactoryBean与BeanFactory的使用及区别

    以前刚转Java的时候去面试被问到过Spring中FactoryBean与BeanFactory的使用及区别,由于之前没有重视这两个的区别,只是在配置文件里面加bean结点并通过注解的形式调用,所以被 ...

  5. Spring中SmartLifecycle和Lifecycle的作用和区别

    欢迎关注方志朋的博客,回复"666"获面试宝典 本文基于SpringBoot 2.5.0-M2讲解Spring中Lifecycle和SmartLifecycle的作用和区别,以及如 ...

  6. Spring中@Autowired注解、@Resource注解的区别

    Spring不但支持自己定义的@Autowired注解,还支持几个由JSR-250规范定义的注解,它们分别是@Resource.@PostConstruct以及@PreDestroy. @Resour ...

  7. Spring中Autowired注解到底怎么实现的

    前言 使用Spring开发时,进行配置主要有两种方式,一是XML的方式,二是Java Config的方式. Spring技术自身也在不断的发展和改变,从当前springboot的火热程度来看,java ...

  8. Spring5:@Autowired注解、@Resource注解和@Service注解

    转载:http://www.cnblogs.com/xrq730/p/5313412.html 什么是注解 传统的Spring做法是使用.xml文件来对bean进行注入或者是配置aop.事物,这么做有 ...

  9. @Autowired注解与@resource注解的区别(十分详细)

    背景: 今天下班路上看到一个大货车,于是想到了装配,然后脑海里跳出了一个注解@Autowired(自动装配),于是又想到最近工作项目用的都是@Resource注解来进行装配.于是本着学什么东西都要一钻 ...

最新文章

  1. CCNP张SIR的视频教程(完全可以下载)
  2. 华为防火墙安全区域介绍
  3. 梯度下降法与牛顿法的比较
  4. 【2017级面向对象程序设计】作业一
  5. html中源文件回车效果无效,网页制作使用教程第2节初级.ppt
  6. 人才缺口40万,摆地摊也没有它挣钱,这个神仙职业今年太火了!
  7. 提高生产力,最全 MyBatisPlus 讲解!
  8. 美团和支付宝大战在所难免
  9. PAT 1003 Emergency
  10. 2018年java技术面试题整理
  11. BZOJ2005 [NOI2010]能量采集
  12. 什么是远程桌面?花生壳+Windows远程桌面控制教程
  13. 不用担心JDK17收费了,Oracle 推出 JDK 8 的升级替代品
  14. 进程间通信之FIFO
  15. java实现简易外卖功能
  16. Freeswitch服务+语音网关设备发送短信功能
  17. GnuTLS error -12: A TLS fatal alert has been received.
  18. 推荐一款好用的固定资产管理系统
  19. ValueError: Classification metrics can‘t handle a mix of continuous-multioutput and multiclass targe
  20. Markdown插入图片操作

热门文章

  1. Android蓝牙串口程序开发
  2. JS替换空格回车换行符
  3. 吃万里路 |甜品店大盘点
  4. Java 拖拽文件到文本框
  5. oracle和SQLserver数据库中select into 的区别
  6. cocos2d: 使用TexturePacker , pvr.ccz, CCSpriteBatchNode, CCSpriteFrameCache
  7. IBM X3650 M3服务器上RAID配置实战
  8. 【译】Withdrawal symptoms
  9. [转]浅谈:国内软件公司为何无法做大做强
  10. ImageLazyLoad-图片随着滚动而进行加载