Spring中 @Autowired注解与@Resource注解的区别
相同点:
@Resource的作用相当于@Autowired,均可标注在字段或属性的setter方法上。
不同点:
(1)提供方:@Autowired是由org.springframework.beans.factory.annotation.Autowired提供,换句话说就是由Spring提供;@Resource是由javax.annotation.Resource提供,即J2EE提供,需要JDK1.6及以上。
(2)注入方式:@Autowired只按照byType 注入;@Resource默认按byName自动注入,也提供按照byType 注入;
(3)属性:@Autowired按类型装配依赖对象,默认情况下它要求依赖对象必须存在,如果允许null值,可以设置它required属性为false。如果我们想使用按名称装配,可以结合@Qualifier注解一起使用。@Resource有两个中重要的属性:name和type。name属性指定byName,如果没有指定name属性,当注解标注在字段上,即默认取字段的名称作为bean名称寻找依赖对象,当注解标注在属性的setter方法上,即默认取属性名作为bean名称寻找依赖对象。需要注意的是,@Resource如果没有指定name属性,并且按照默认的名称仍然找不到依赖对象时, @Resource注解会回退到按类型装配。但一旦指定了name属性,就只能按名称装配了。
@Resource装配顺序
1. 如果同时指定了name和type,则从Spring上下文中找到唯一匹配的bean进行装配,找不到则抛出异常
2. 如果指定了name,则从上下文中查找名称(id)匹配的bean进行装配,找不到则抛出异常
3. 如果指定了type,则从上下文中找到类型匹配的唯一bean进行装配,找不到或者找到多个,都会抛出异常
4. 如果既没有指定name,又没有指定type,则自动按照byName方式进行装配;如果没有匹配,则回退为一个原始类型进行匹配,如果匹配则自动装配;
推荐使用@Resource注解在字段上,这样就不用写setter方法了.并且这个注解是属于J2EE的,减少了与Spring的耦合,这样代码看起就比较优雅 。
Spring中 @Autowired注解与@Resource注解的区别相关推荐
- Spring中@Autowired、@Qualifier、@Resource的区别
转自: Spring中@Autowired.@Qualifier.@Resource的区别_老周聊架构的博客-CSDN博客_qualifier和resource区别1.@Autowired@Autow ...
- Spring中解决事务以及异步注解失效
Spring中解决事务以及异步注解失效 一.重现@Transaction失效的场景 有如下业务场景,新增订单后,自动发送短信,下面的代码在同一个类中: @Transaction public void ...
- java为什么引入注解_说说Spring中为何要引入Lookup注解
前言 我们先探一探官方文档关于Method Injection的章节是怎么说的: In most application scenarios, most beans in the container ...
- java中factory_Java后台面试--Spring中FactoryBean与BeanFactory的使用及区别
以前刚转Java的时候去面试被问到过Spring中FactoryBean与BeanFactory的使用及区别,由于之前没有重视这两个的区别,只是在配置文件里面加bean结点并通过注解的形式调用,所以被 ...
- Spring中SmartLifecycle和Lifecycle的作用和区别
欢迎关注方志朋的博客,回复"666"获面试宝典 本文基于SpringBoot 2.5.0-M2讲解Spring中Lifecycle和SmartLifecycle的作用和区别,以及如 ...
- Spring中@Autowired注解、@Resource注解的区别
Spring不但支持自己定义的@Autowired注解,还支持几个由JSR-250规范定义的注解,它们分别是@Resource.@PostConstruct以及@PreDestroy. @Resour ...
- Spring中Autowired注解到底怎么实现的
前言 使用Spring开发时,进行配置主要有两种方式,一是XML的方式,二是Java Config的方式. Spring技术自身也在不断的发展和改变,从当前springboot的火热程度来看,java ...
- Spring5:@Autowired注解、@Resource注解和@Service注解
转载:http://www.cnblogs.com/xrq730/p/5313412.html 什么是注解 传统的Spring做法是使用.xml文件来对bean进行注入或者是配置aop.事物,这么做有 ...
- @Autowired注解与@resource注解的区别(十分详细)
背景: 今天下班路上看到一个大货车,于是想到了装配,然后脑海里跳出了一个注解@Autowired(自动装配),于是又想到最近工作项目用的都是@Resource注解来进行装配.于是本着学什么东西都要一钻 ...
最新文章
- CCNP张SIR的视频教程(完全可以下载)
- 华为防火墙安全区域介绍
- 梯度下降法与牛顿法的比较
- 【2017级面向对象程序设计】作业一
- html中源文件回车效果无效,网页制作使用教程第2节初级.ppt
- 人才缺口40万,摆地摊也没有它挣钱,这个神仙职业今年太火了!
- 提高生产力,最全 MyBatisPlus 讲解!
- 美团和支付宝大战在所难免
- PAT 1003 Emergency
- 2018年java技术面试题整理
- BZOJ2005 [NOI2010]能量采集
- 什么是远程桌面?花生壳+Windows远程桌面控制教程
- 不用担心JDK17收费了,Oracle 推出 JDK 8 的升级替代品
- 进程间通信之FIFO
- java实现简易外卖功能
- Freeswitch服务+语音网关设备发送短信功能
- GnuTLS error -12: A TLS fatal alert has been received.
- 推荐一款好用的固定资产管理系统
- ValueError: Classification metrics can‘t handle a mix of continuous-multioutput and multiclass targe
- Markdown插入图片操作
热门文章
- Android蓝牙串口程序开发
- JS替换空格回车换行符
- 吃万里路 |甜品店大盘点
- Java 拖拽文件到文本框
- oracle和SQLserver数据库中select into 的区别
- cocos2d: 使用TexturePacker , pvr.ccz, CCSpriteBatchNode, CCSpriteFrameCache
- IBM X3650 M3服务器上RAID配置实战
- 【译】Withdrawal symptoms
- [转]浅谈:国内软件公司为何无法做大做强
- ImageLazyLoad-图片随着滚动而进行加载