区别一

@Autowired 是 Spring 自带的注解
@Resource 是 J2EE提供,Spring 做了支持

区别二

@Autowired 默认按类型装配
@Resource 默认按照名称进行装配

我们一起看看 @Resource 的源码

@Target({ElementType.TYPE, ElementType.METHOD, ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
public @interface Resource {String name() default "";Class<?> type() default Object.class;Resource.AuthenticationType authenticationType() default Resource.AuthenticationType.CONTAINER;boolean shareable() default true;String description() default "";String mappedName() default "";String lookup() default "";public static enum AuthenticationType {CONTAINER,APPLICATION;private AuthenticationType() {}}
}

从上面看到 @Resource 有两个重要的属性:name 和 type 。

上面虽然说了 “默认按照名称进行装配” 但是可以按照类型处理。

Spring 将 @Resource 注解的 name 属性解析为 bean 的名字,type 属性则解析为 bean 的类型。所以如果使用 name 属性,则使用 byName 的自动注入策略,而使用 type 属性则使用 byType 自动注入策略。如果既不指定 name 也不指定 type 属性,这时将通过反射机制使用 byName 自动注入策略。

上面的话就是介绍了 @Resource 装配顺序:

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

@Resource 大致讲完了,是不是感觉 @Autowired 和 @Resource 都差不多,只不过一个是根据类型注入,一个是根据名称注入,什么时候建议使用 @Resource 呢?

这么说吧,因为 @Resource 是 java 自带的!以及在 idea 中不会有黄色提示线。而如果用 @Autowired 则 idea 会提示 "不建议使用字段注入 "。这可是喜欢干净的人的福利呀,为什么你还不用上呢?

还在使用@Autowired 吗?@Autowired和@Resource有啥区别相关推荐

  1. @Autowired @Resource @Qualifier的区别

    @Autowired @Resource @Qualifier的区别 实用理解:@Autowired @Resource 二选其一,看中哪个就用哪个. 简单理解: @Autowired 根据类型注入, ...

  2. @Autowired、@Qualifier、@Resource的区别

    参考博文: http://www.cnblogs.com/happyyang/articles/3553687.html http://blog.csdn.net/revent/article/det ...

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

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

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

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

  5. Spring学习笔记(六)。Spring自动装配,按名称自动装配:byName,按类型自动装配:byType,@Autowired,@Qualifier,@Resource

    文章目录 Bean的自动装配 1. 测试环境搭建 2. byName 3. byType 4. 使用注解 4.1 @Autowired 4.2 @Qualifier 4.3 @Resource 5. ...

  6. 详述 @Service 和 @Resource 注解的区别

    1 前言 在我们使用 Spring 框架的时候,注解是"不可或缺"的一部分,它帮我们脱离了配置繁琐的 XML 文件的工作,但有一点却需要我们自己去把握,那就是"3何&qu ...

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

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

  8. spring注解( @Autowired、@Qualifier、@Resource、@PostConstruct、@PreDestroy、 @Component、@Scope)-描述的比较清楚

    概述: 注释配置相对于 XML 配置具有很多的优势: 它可以充分利用 Java 的反射机制获取类结构信息,这些信息可以有效减少配置的工作.如使用 JPA 注释配置 ORM 映射时,我们就不需要指定 P ...

  9. Spring中 @Autowired注解与@Resource注解的区别

    相同点: @Resource的作用相当于@Autowired,均可标注在字段或属性的setter方法上. 不同点: (1)提供方:@Autowired是由org.springframework.bea ...

最新文章

  1. 如何搭建并使用便携式 4G/LTE 伪基站研究移动安全
  2. linux下内存测试mbw,【转帖】MBW内存测试
  3. Linux-鸟菜-1-Linux简介
  4. Java 集合系列(3): fail-fast总结(通过ArrayList来说明fail-fast的原理、解决办法)...
  5. mysql 5.6 删除用户_mysql 新增 删除用户和权限分配
  6. idea webapp目录404问题,war包方式运行
  7. error: ‘XXX‘ is defined but never used (no-unused-vars)报错的解决方案
  8. 简单个人静态HTML网页设计作品 DIV布局个人介绍网页模板代码 DW个人网站制作成品 web网页制作与实现
  9. 黑群晖二合一安装不了套件_家庭NAS部署指南(二)——如何自己动手安装一台黑群晖主机...
  10. U盘(移动硬盘)介质写入保护解决办法
  11. Qos介绍及功能->分类标记->流量管理(令牌桶)->拥塞管理与拥塞避免
  12. 完美卸载Visual Studio2015的方法汇总
  13. vue动态设置背景图片
  14. gnuradio+b210实现FM收音机
  15. 五方面详细解析《商业银行互联网贷款管理暂行办法》
  16. 2020年产品经理职业发展路径
  17. 设计师一定能用上的6个,免费、可商用图片素材网站
  18. 联想小新触摸板驱动_联想 小新Air 13.3触摸板怎么用?
  19. WebAssembly运行时库(WASM runtime:wasmer 或 wasmtime)\将rust官方demo猜数字编译为WASI目标并使用Wasmer运行
  20. 不正经的保姆级西电软工操作系统实验课教程 ==== 专题一

热门文章

  1. 想编程,是勤奋自学还是去培训班学习?
  2. 旗鱼SailfishOS SDK for Windows初体验
  3. VCC,VDD,VSS,VEE区别
  4. 使用FFmpeg命令处理音视频
  5. 小编程(二):Matlab中num2str实现数字1到字符串0001的变换
  6. 深入理解Java虚拟机(周志明)——读书笔记1
  7. InputStream (输入流) 与 OutputStream (输出流) 转换
  8. 梁漱溟:做学问的八个境界
  9. 嵌入式开发要学什么_必备嵌入式学习路线_高手速成方法
  10. wifi 小程序 透传_微信小程序一键连wifi