介绍

@Autowire和@Resource都是Spring支持的注解方式动态装配bean。

详解

@Autowire

@Autowire默认按照类型(by-type)装配,默认情况下要求依赖对象必须存在。

@Autowire(required=false)
private InjectionBean beanName;
@Autowire
@Qualifier("beanName")private InjectionBean beanName;

@Autowire按照名称(by-name)装配,则
@Autowire + @qualifier("") = @Resource(name="")

@Resource

@Resource默认按照名称(by-name)装配,名称可以通过name属性指定。

  1. 当注解在字段上时,默认取name=字段名称装配。
  2. 当注解在setter方法上时,默认取name=属性名称装配。
  1. 当显示指定name属性后,只能按照名称(by-name)装配。

@Resoure装配顺序

  1. 如果同时指定name和type属性,则找到唯一匹配的bean装配,未找到则抛异常;
  2. 如果指定name属性,则按照名称(by-name)装配,未找到则抛异常;
  3. 如果指定type属性,则按照类型(by-type)装配,未找到或者找到多个则抛异常;
  4. 既未指定name属性,又未指定type属性,则按照名称(by-name)装配;如果未找到,则按照类型(by-type)装配。

对比

对比项 @Autowire @Resource
注解来源 Spring注解 JDK注解(JSR-250标准注解,属于J2EE)
装配方式 优先按类型 优先按名称
属性 required name、type
作用范围 字段、setter方法、构造器 字段、setter方法

说明:

作用范围在字段上,均无需在写setter方法

总结

推荐使用@Resource

@Autowire和@Resource区别相关推荐

  1. 一次性讲清 Spring 常用注解 @Bean 、 @Component 、@Autowire、@Resource 的区别, 你知道吗?

    本文打算介绍几个不太容易说出其区别,或者用途的 Spring 注解,比如 @Component 与 @Bean 的比较,@ControllerAdvice 是如何处理自定义异常的等等. Spring ...

  2. Autowire 和 @Resource 的区别

    1.@Autowire 和 @Resource都可以用来装配bean,都可以用于字段或setter方法. 2.@Autowire 默认按类型装配,默认情况下必须要求依赖对象必须存在,如果要允许 nul ...

  3. @Autowire 和 @Resource 的区别

    1.@Autowire 和 @Resource都可以用来装配 bean,都可以用于字段或 setter 方法. 2.@Autowire 默认按类型装配,默认情况下必须要求依赖对象必须存在,如果要允许 ...

  4. @Autowire和@Resource

    注解@Autowire和@Resource,我们都知道都可以用来装配bean,将对象加载到容器之中,但是他们具体有什么区别,现在简单说明一下这俩个注解的区别. @Autowired @Autowire ...

  5. Spring注解驱动开发学习总结8:自动装配注解@Autowire、@Resource、@Inject

    Spring注解驱动开发学习总结8:自动装配注解@Autowire.@Resource.@Inject 1.自动装配@Autowire.@Resource.@Inject 1.1 构建bookDao ...

  6. @Autowired和@Resource区别

    @Autowired和@Resource区别 1.提供方不同 ​ @Autowired 是Spring提供的,@Resource 是J2EE提供的. 2.装配时默认类型不同 ​ @Autowired只 ...

  7. 4.Autowired和Resource区别

    目录:面试题收集_懒起来的博客-CSDN博客 Autowired和Resource区别 @Autowired 默认按类型装配(这个注解是属业spring的),默认情况下必须要求依赖对象必须存在,如果要 ...

  8. @Autowire与@Resource用法以及它们的区别

    前言:平常使用这个两个注解的时候就是相当然的使用,没有去具体比价两者的区别,在网上查阅了资料,加自己测试后,记录一下. 首先,这个两个注解都是用来完成组件的装配的,即利用依赖注入(DI),完成对ioc ...

  9. Java面试--autowired和resource区别

    面试题:autowired和resource有什么区别(百度面试题) autowired和resource有什么区别 @Resource默认是按照名称来装配注入的,只有当找不到与名称匹配的bean才会 ...

最新文章

  1. oracle primavera p6 下载,【项目管理软件套装】Oracle Primavera P6 Enterprise
  2. 领域应用 | 常识性概念图谱建设以及在美团场景中的应用
  3. java 课后习题 Vector类的 初使用
  4. C#LeetCode刷题之#225-用队列实现栈(Implement Stack using Queues)
  5. 有人说苹果手机的CPU非常强大,为什么会这样?苹果cpu又是谁设计的?
  6. swoole mysql 协程_swoole-orm: 基于swoole的mysql协程连接池,简单封装。实现多个协程间共用同一个协程客户端。参考thinkphp-orm...
  7. PHP项目:如何用PHP高并发检索数据库?
  8. immutability因React官方出镜之使用总结分享!
  9. python自动下载酷狗音乐_python实现酷狗音乐mp3下载
  10. 情侣博客源码php,分享超炫的表白页面和爱的纪念日源码
  11. Android 仿微信图片选择器 PictureSelector3.0 的使用
  12. 防抖(debounce) 和 节流(throttling)的封装使用-最终发布npm
  13. LaTex 中 控制表格的行距
  14. 动手学习数据分析第一章内容
  15. 【 facenet-retinaface】快速复现 实现 facenet-retinaface-pytorch 人脸识别 windows上 使用cpu实现
  16. JS中onpropertychange事件和onchange事件区别
  17. 多线程--何时用到多线程
  18. js 数组遍历符合条件跳出循环体_Js数组遍历方法对比总结
  19. 从移动2G、3G、4G和iphone5s说起的手机那点事
  20. 化工厂车辆定位管理系统,化工厂智慧化步伐的重要一环——新导智能

热门文章

  1. 【高等数学】函数连续、可导、可微,洛必达法则使用条件、一阶可导、一阶连续可导、二阶可导、二阶连续可导
  2. Tomcat 启动闪退问题
  3. 软考高级证书可以积分50分
  4. python计算机视觉学习———图像分割
  5. [Android]混淆Android代码
  6. Android9.0版本Vold服务源码分析
  7. 【C语言】冒泡排序学习笔记
  8. “高高兴兴上班,平平安安回家”
  9. matlab定义双精度型变量_matlab双精度浮点数编码及区间覆盖(原创)
  10. textarea文本不换行的问题