转载自 @Resource,@Autowired,@Inject3种注入方式详解

概况

@Resource,@Autowired,@Inject 这3种都是用来注入bean的,它们属于不同的程序中。

ANNOTATION PACKAGE SOURCE
@Resource javax.annotation Java JSR-250
@Inject javax.inject Java JSR-330
@Autowired org.springframework.bean.factory Spring 2.5+

JSR是Java Specification Requests的缩写,意思是Java 规范提案。是指向JCP(Java Community Process)提出新增一个标准化技术规范的正式请求。任何人都可以提交JSR,以向Java平台增添新的API和服务。JSR已成为Java界的一个重要标准。

区别

@Resource

它有两个关键的属性:name-名称,type-类型

1、如果指定了name,type,则从Spring容器中找一个名称和类型相当应的一个bean,找不到则报错。

2、如果只指定了name,则从Spring容器中找一个名称和name一样的bean,找不到则报错。

3、如果只指定了type,则从Spring容器中找一个类型和type一样的bean,找不到或者找到多个则报错。

4、如果没有指定参数,则默认找字段名称装配,找不到则按类型装配,找不到则报错。

@Autowired

默认按类型装配,找不到或者找到多个则报错。

如果要按名称装配,需要结合Spring另外一个注解Qualifier("name")使用。

默认必须装配requred=true,如果可以为空,可以设置为false,在Spring4+结合jdk8+的情况下还可以使用Optional和false同等的效果,如

@Autowired

private Optional<UserService> userService;

@Inject

和@Autowired类似,可以完全代替@Autowired,但这个没有required属性,要求bean必须存在。

如果要按名称装配,需要结合javax另外一个注解N("name")使用。

@Resource,@Autowired,@Inject3种注入方式详解相关推荐

  1. Spring的注入方式详解

    [html] view plaincopy Spring的注入方式详解 Spring有三个注入方式,type1,type2,type3 type1  接口依赖 type2  setter/getter ...

  2. PCBA加工中常见的两种焊接方式详解

    PCBA加工中常见的两种焊接方式详解 PCBA加工,两种常见的焊接方式就是回流焊和波峰焊,与手动焊接技术相比,自动焊接技术具有减少人为因素的影响.提高效率.降低成本.提高质量等优势,在PCBA加工中, ...

  3. C++的三种继承方式详解

    文章目录 @[toc] C++的三种继承方式详解以及区别 前言 一.public继承 二.protected继承 三.private继承 四.三者区别 五.总结 后话 C++的三种继承方式详解以及区别 ...

  4. Spring 依赖注入方式详解

    平常的Java开发中,程序员在某个类中需要依赖其它类的方法. 通常是new一个依赖类再调用类实例的方法,这种开发存在的问题是new的类实例不好统一管理. Spring提出了依赖注入的思想,即依赖类不由 ...

  5. JavaScript中this的五种绑定方式详解

    1 this的五种绑定方式 1.1 默认绑定 默认绑定是指当函数调用时,没有为其指定对象上下文,此时会将该函数的this绑定到全局对象(window对象).自ES5有了严格模式之后,默认绑定方式又分为 ...

  6. asp.net Session在web.config中的三种配置方式——详解

    这段代码就是设置session在web.config中的存储方式. < sessionState mode="Off|InProc|StateServer|SQLServer" ...

  7. 单例模式的几种实现方式详解以及原理

    单例模式介绍 前言 这是一个的萌新写的博客,以下是学习课程以后的总结,用于个人的复习与总结,如果有误还请多多包容和指正. 了解单例模式: 单例类只能有一个实例 单例必须创建自己的唯一一个实例 单例类必 ...

  8. c# 委托实例的几种执行方式详解

    声明委托: 首先,绑定委托方法有如下几种方式: 第一种,直接对符合委托结构的方法进行多绑定: 第二种,绑定匿名方法: 第三种,用等号指定单方法: 注意,第三种绑定方式会将之前所绑定的方法全部解绑,执行 ...

  9. oracle if=,oracle中if/else的三种实现方式详解

    1.标准sql规范 1.单个IF IF v=... THEN END IF; 2.IF ... ELSE IF v=... THEN ELSE t....; END IF; 3.多个IF IF v=. ...

最新文章

  1. LightBus新浪微博客户端开源下载
  2. delphi usb 读写_写作论语 | 崔嵘:写我所读——国外整本书阅读中读写结合的理论与实践(上)...
  3. java1 lt lt 16,“lt;lt;” Java运算符
  4. 全球及中国固态锂电池行业需求量预测及投资规模战略报告2021-2027年
  5. OpenCV:OpenCV图像旋转的代码
  6. Throwable 结构图
  7. dubbo调用service后返回对象null_dubbo-go 白话文 | go 和 java 互通有无
  8. python 嵌入 php,Python与PHP实现插入排序实例
  9. VMWare学习总结(2)——VMware中三种网络连接的区别
  10. 空间数据挖掘主要方法
  11. wordnet的特点
  12. kindle 3 webbrowser破解,
  13. 一文详解中英文在NLP上的10大差异点
  14. 电脑开机正常,但显示器没反应怎么办
  15. 前端生成gif动态图下载
  16. Opencv人数统计 yolo kcf人头跟踪 人数统计 KCF目标跟踪 YOLO目标跟踪
  17. 通向架构师的道路(第二十六天)漫谈架构与设计文档的写作技巧
  18. c语言printf输出字符表情,C语言中printf输出的奇怪错误
  19. 重写重载—重写详细解释
  20. 【程序源代码】小程序-前后开源

热门文章

  1. c语言的程序灵魂是什么,C语言 第二章 程序的灵魂--算法
  2. [蓝桥杯2016初赛]剪邮票-dfs+next_permutation(好题)
  3. 不同路径 II-dp
  4. AcWing 126. 最大的和
  5. Stack(栈 c++模版实现)
  6. Redis流量控制策略
  7. python哪个方向工资高_【看完这五大Python就业方向,你选择哪个?】- 环球网校
  8. 蓝桥杯 123 二分+打表
  9. 进程调度算法 C++实现
  10. 【POI2007】OSI-Axes of Symmetry【计算几何】【manacher】