@Resource,@Autowired,@Inject3种注入方式详解
转载自 @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种注入方式详解相关推荐
- Spring的注入方式详解
[html] view plaincopy Spring的注入方式详解 Spring有三个注入方式,type1,type2,type3 type1 接口依赖 type2 setter/getter ...
- PCBA加工中常见的两种焊接方式详解
PCBA加工中常见的两种焊接方式详解 PCBA加工,两种常见的焊接方式就是回流焊和波峰焊,与手动焊接技术相比,自动焊接技术具有减少人为因素的影响.提高效率.降低成本.提高质量等优势,在PCBA加工中, ...
- C++的三种继承方式详解
文章目录 @[toc] C++的三种继承方式详解以及区别 前言 一.public继承 二.protected继承 三.private继承 四.三者区别 五.总结 后话 C++的三种继承方式详解以及区别 ...
- Spring 依赖注入方式详解
平常的Java开发中,程序员在某个类中需要依赖其它类的方法. 通常是new一个依赖类再调用类实例的方法,这种开发存在的问题是new的类实例不好统一管理. Spring提出了依赖注入的思想,即依赖类不由 ...
- JavaScript中this的五种绑定方式详解
1 this的五种绑定方式 1.1 默认绑定 默认绑定是指当函数调用时,没有为其指定对象上下文,此时会将该函数的this绑定到全局对象(window对象).自ES5有了严格模式之后,默认绑定方式又分为 ...
- asp.net Session在web.config中的三种配置方式——详解
这段代码就是设置session在web.config中的存储方式. < sessionState mode="Off|InProc|StateServer|SQLServer" ...
- 单例模式的几种实现方式详解以及原理
单例模式介绍 前言 这是一个的萌新写的博客,以下是学习课程以后的总结,用于个人的复习与总结,如果有误还请多多包容和指正. 了解单例模式: 单例类只能有一个实例 单例必须创建自己的唯一一个实例 单例类必 ...
- c# 委托实例的几种执行方式详解
声明委托: 首先,绑定委托方法有如下几种方式: 第一种,直接对符合委托结构的方法进行多绑定: 第二种,绑定匿名方法: 第三种,用等号指定单方法: 注意,第三种绑定方式会将之前所绑定的方法全部解绑,执行 ...
- 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=. ...
最新文章
- LightBus新浪微博客户端开源下载
- delphi usb 读写_写作论语 | 崔嵘:写我所读——国外整本书阅读中读写结合的理论与实践(上)...
- java1 lt lt 16,“lt;lt;” Java运算符
- 全球及中国固态锂电池行业需求量预测及投资规模战略报告2021-2027年
- OpenCV:OpenCV图像旋转的代码
- Throwable 结构图
- dubbo调用service后返回对象null_dubbo-go 白话文 | go 和 java 互通有无
- python 嵌入 php,Python与PHP实现插入排序实例
- VMWare学习总结(2)——VMware中三种网络连接的区别
- 空间数据挖掘主要方法
- wordnet的特点
- kindle 3 webbrowser破解,
- 一文详解中英文在NLP上的10大差异点
- 电脑开机正常,但显示器没反应怎么办
- 前端生成gif动态图下载
- Opencv人数统计 yolo kcf人头跟踪 人数统计 KCF目标跟踪 YOLO目标跟踪
- 通向架构师的道路(第二十六天)漫谈架构与设计文档的写作技巧
- c语言printf输出字符表情,C语言中printf输出的奇怪错误
- 重写重载—重写详细解释
- 【程序源代码】小程序-前后开源
热门文章
- c语言的程序灵魂是什么,C语言 第二章 程序的灵魂--算法
- [蓝桥杯2016初赛]剪邮票-dfs+next_permutation(好题)
- 不同路径 II-dp
- AcWing 126. 最大的和
- Stack(栈 c++模版实现)
- Redis流量控制策略
- python哪个方向工资高_【看完这五大Python就业方向,你选择哪个?】- 环球网校
- 蓝桥杯 123 二分+打表
- 进程调度算法 C++实现
- 【POI2007】OSI-Axes of Symmetry【计算几何】【manacher】