相同点:

  1. 两者都能做到注入一个Bean.
  2. 两者都可应用在Field和Method上面。
  3. 两者均为Runtime级别的Retention。

不同点:

  1. 使用的场景有差异 @Resource可应用在类(TYPE)上面,@Autowired可以应用在构造方法(CONSTRUCTOR)和注解类型(ANNOTATION_TYPE)上面。
  2. @Resource是在javax.annotation包下面,是JSR-250规范定义的注解,而@Autowired是由org.springframework.beans.factory.annotation包下面的,是由spring实现的。
  3. @Autowired默认查找策略时byType,@Resource默认查找策略是byName。如果@Autowired想要按照byName加载bean,需要配合@Qualifier注解使用。
  4. @Autowired 只有一个属性 required 表示这个依赖是否时必须的,即当依赖对象为null时也可以。如果注入的方法有多个参数,则每个参数的策略一致。
  5. @Resource 用于类(TYPE)时,表示该类需要被容器初始化为一个bean.

@Resource 查找策略

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

@Resource和@Autowired的异同的更多相关文章

  1. @Resource 和 @Autowired注解的异同

    @Resource 和 @Autowired注解的异同 @Autowired 默认按类型装配,默认情况下必须要求依赖对象必须存在,如果要允许null值,可以设置它的required属性为false 例 ...

  2. Spring注解@Resource和@Autowired区别对比

    转载:http://www.cnblogs.com/think-in-java/p/5474740.html @Resource和@Autowired都是做bean的注入时使用,其实@Resource ...

  3. @Resource、@Autowired、@Qualifier的注解注入及区别

    在Java代码中可以使用 @Resource  或者 @Autowired 注解方式来进行注入. 虽然 @Resource 和 @Autowried 都可以完成依赖注入,但是他们是有区别的. 一: @ ...

  4. Spring 注解 @Resource和@Autowired(转)

    鸣谢:http://my.oschina.net/u/216467/blog/205951 @Resource和@Autowired两者都是做bean的注入使用. 其实@Resource并不是Spri ...

  5. Spring @Resource、@Autowired、@Qualifier的注解注入及区别

    spring2.5提供了基于注解(Annotation-based)的配置,我们可以通过注解的方式来完成注入依赖.在Java代码中可以使用 @Resource或者@Autowired注解方式来经行注入 ...

  6. Spring注解 @Resource和@Autowired

    @Resource和@Autowired两者都是做bean的注入使用.其实@Resource并不是Spring的注解,他的包是javax.annotation.Resource 需要导入.但是Spri ...

  7. Spring、使用注解方式装配对象(@Resource、@Autowired)

    使用手工注解方式有两种方式@Resource.@Autowired 首先,引入注解所使用的Jar包  :common-annotations.jar 然后在beans.xml中加入命名空间空间 xml ...

  8. @resource、@Autowired、@Service在一个接口多个实现类中的应用

    Spring在没有引入注解之前,传统的Spring做法是使用.xml文件来对bean进行注入,所有的内容都需要配置在.xml文件中,使配置和编程分离,却增加了可读性和复杂度. Spring注解将复杂的 ...

  9. 注解@Resource和@Autowired区别对比

    @Resource和@Autowired都是做bean的注入时使用,其实@Resource并不是Spring的注解,它的包是javax.annotation.Resource,需要导入,但是Sprin ...

随机推荐

  1. Android 代码集装箱

    1. 一个APP下载升级的Demo(通知栏实时更新下载进度)------(一) 2.一个APP下载升级的Demo(通知栏实时更新下载进度)------(二) 3.APK包名修改

  2. SDN测量论文粗读(三)9.24

    Jaal: Towards Network Intrusion Detection at ISP Scale 论文来源:CoNext 发表时间:2015 解决问题及所做贡献:Jaal:大规模精细网络入 ...

  3. OO 第五、六、七次作业总结

    第五次作业 算法与实现 这次的电梯因为要使用系统时间进行模拟,所以又是推倒了之前的重写的.最后采用三个电梯线程,一个调度线程,一个输入线程的方式. 源码分析图示 类图 方法分析 类分析 由上图看,由于 ...

  4. MySQL架构与引擎初识

    一.MySQL逻辑架构 1.连接层: 最上层是一些客户端和连接服务,所包含的服务并不是MySQL所独有的技术.它们都是服务于C/S程序或者是这些程序所需要的 :连接处理,身份验证,安全性等等. 2.服 ...

  5. linux 学习第十一天

    一.配置服务说明 1.1.linux系统中的一切都是文件 1.2.配置一个服务就是在修改去配置文件 1.3.要想让新的配置文件立即生效,需要重启对应的服务 二.配置网卡 2.1.编辑配置文件 vim ...

  6. 记录一下idea的破解方法

    刚把idea升级到最新版,发现要重新激活,网上查了有改host的方法可行,只是有点麻烦.无意中发现一个方法,如图所示 输入    http://idea.java.sx/   即可,亲测可用.如果资金 ...

  7. 1、win10下的Docker+Redis 的下载及简单使用

    一.下载Docker: 因为始终注册docker账号不成功,所以在这里点击下载. 选中docker-for-windows/ 选中beta/ 下载这个.msi文件 二.安装 1.安装.msi文件,桌面 ...

  8. ThinkPHP5.1 前置操作说明

    可以为某个或者某些操作指定前置执行的操作方法,设置 beforeActionList属性可以指定某个方法为其他方法的前置操作,数组键名为需要调用的前置方法名,无值的话为当前控制器下所有方法的前置方法. ...

  9. PHP字符转码

    最近手里面有一个新的项目,下载的程序用的是 gbk, 可是我需要UTF8的格式,因为只有这个的格式才可以加入百度的MIP项目. 来此学习了解php编码的一些内容,还请多多指教.

  10. Altiun designer问题汇总(不断更新)

    (1)元件库-引脚名称被矩形方框遮住 该问题可能是因为设置中文版而产生的错误,可以尝试在旁边再摆一个矩形,并且摆上引脚观察是否会被隐藏.如果还存在该现象,先将版本语言改为原版(英文版),再重新绘制即可