还在使用@Autowired 吗?@Autowired和@Resource有啥区别
区别一
@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 装配顺序:
- 如果同时指定了 name 和 type ,则从 Spring 上下文中找到唯一匹配的 bean 进行装配,找不到则抛出异常
- 1 如果同时指定了 name 和 type ,则从 Spring 上下文中找到唯一匹配的 bean 进行装配,找不到则抛出异常
- 如果指定了 type ,则从 Spring 上下文中找到类型匹配的唯一 bean 进行装配,找不到或找到多个,都抛出异常
- 如果既没指定 name ,也没指定 type ,则自动按照 byName 方式进行装配。如果没有匹配,则回退为一个原始类型进行匹配,如果匹配则自动装配
@Resource 大致讲完了,是不是感觉 @Autowired 和 @Resource 都差不多,只不过一个是根据类型注入,一个是根据名称注入,什么时候建议使用 @Resource 呢?
这么说吧,因为 @Resource 是 java 自带的!以及在 idea 中不会有黄色提示线。而如果用 @Autowired 则 idea 会提示 "不建议使用字段注入 "。这可是喜欢干净的人的福利呀,为什么你还不用上呢?
还在使用@Autowired 吗?@Autowired和@Resource有啥区别相关推荐
- @Autowired @Resource @Qualifier的区别
@Autowired @Resource @Qualifier的区别 实用理解:@Autowired @Resource 二选其一,看中哪个就用哪个. 简单理解: @Autowired 根据类型注入, ...
- @Autowired、@Qualifier、@Resource的区别
参考博文: http://www.cnblogs.com/happyyang/articles/3553687.html http://blog.csdn.net/revent/article/det ...
- @Autowired注解与@resource注解的区别(十分详细)
背景: 今天下班路上看到一个大货车,于是想到了装配,然后脑海里跳出了一个注解@Autowired(自动装配),于是又想到最近工作项目用的都是@Resource注解来进行装配.于是本着学什么东西都要一钻 ...
- Spring中@Autowired、@Qualifier、@Resource的区别
转自: Spring中@Autowired.@Qualifier.@Resource的区别_老周聊架构的博客-CSDN博客_qualifier和resource区别1.@Autowired@Autow ...
- Spring学习笔记(六)。Spring自动装配,按名称自动装配:byName,按类型自动装配:byType,@Autowired,@Qualifier,@Resource
文章目录 Bean的自动装配 1. 测试环境搭建 2. byName 3. byType 4. 使用注解 4.1 @Autowired 4.2 @Qualifier 4.3 @Resource 5. ...
- 详述 @Service 和 @Resource 注解的区别
1 前言 在我们使用 Spring 框架的时候,注解是"不可或缺"的一部分,它帮我们脱离了配置繁琐的 XML 文件的工作,但有一点却需要我们自己去把握,那就是"3何&qu ...
- Spring中@Autowired注解、@Resource注解的区别
Spring不但支持自己定义的@Autowired注解,还支持几个由JSR-250规范定义的注解,它们分别是@Resource.@PostConstruct以及@PreDestroy. @Resour ...
- spring注解( @Autowired、@Qualifier、@Resource、@PostConstruct、@PreDestroy、 @Component、@Scope)-描述的比较清楚
概述: 注释配置相对于 XML 配置具有很多的优势: 它可以充分利用 Java 的反射机制获取类结构信息,这些信息可以有效减少配置的工作.如使用 JPA 注释配置 ORM 映射时,我们就不需要指定 P ...
- Spring中 @Autowired注解与@Resource注解的区别
相同点: @Resource的作用相当于@Autowired,均可标注在字段或属性的setter方法上. 不同点: (1)提供方:@Autowired是由org.springframework.bea ...
最新文章
- 如何搭建并使用便携式 4G/LTE 伪基站研究移动安全
- linux下内存测试mbw,【转帖】MBW内存测试
- Linux-鸟菜-1-Linux简介
- Java 集合系列(3): fail-fast总结(通过ArrayList来说明fail-fast的原理、解决办法)...
- mysql 5.6 删除用户_mysql 新增 删除用户和权限分配
- idea webapp目录404问题,war包方式运行
- error: ‘XXX‘ is defined but never used (no-unused-vars)报错的解决方案
- 简单个人静态HTML网页设计作品 DIV布局个人介绍网页模板代码 DW个人网站制作成品 web网页制作与实现
- 黑群晖二合一安装不了套件_家庭NAS部署指南(二)——如何自己动手安装一台黑群晖主机...
- U盘(移动硬盘)介质写入保护解决办法
- Qos介绍及功能->分类标记->流量管理(令牌桶)->拥塞管理与拥塞避免
- 完美卸载Visual Studio2015的方法汇总
- vue动态设置背景图片
- gnuradio+b210实现FM收音机
- 五方面详细解析《商业银行互联网贷款管理暂行办法》
- 2020年产品经理职业发展路径
- 设计师一定能用上的6个,免费、可商用图片素材网站
- 联想小新触摸板驱动_联想 小新Air 13.3触摸板怎么用?
- WebAssembly运行时库(WASM runtime:wasmer 或 wasmtime)\将rust官方demo猜数字编译为WASI目标并使用Wasmer运行
- 不正经的保姆级西电软工操作系统实验课教程 ==== 专题一
热门文章
- 想编程,是勤奋自学还是去培训班学习?
- 旗鱼SailfishOS SDK for Windows初体验
- VCC,VDD,VSS,VEE区别
- 使用FFmpeg命令处理音视频
- 小编程(二):Matlab中num2str实现数字1到字符串0001的变换
- 深入理解Java虚拟机(周志明)——读书笔记1
- InputStream (输入流) 与 OutputStream (输出流) 转换
- 梁漱溟:做学问的八个境界
- 嵌入式开发要学什么_必备嵌入式学习路线_高手速成方法
- wifi 小程序 透传_微信小程序一键连wifi