[转帖]@Autowired 和 @Resource 的区别

autowired,resource,区别 · 浏览次数 : 0

小编点评

**@Autowired** 和 **@Resource** 的区别以及默认注入方式如下: | 特征 | @Autowired | @Resource | |---|---|---| | 默认注入方式 | byType | byName | | 注解类型 | 接口类型 | 类类型 | | 注解参数 | 通过名称 (@Qualifier) 或类型 (@Type) 指定 | 通过名称 (@Qualifier) 指定 | | 支持的注入类型 | 接口实现类 | 类实现类 | | 匹配方法 | 通过类型匹配 | 通过名称和类型匹配 | | 支持的注入属性 | 包括名称和类型 | 只支持名称匹配 | | 返回类型 | 匹配到的对象类型 | 与注入对象的类型匹配的唯一对象类型 | | 默认值 | 无法指定 | 可指定默认值 | | 错误处理 | 无法指定,回退为原始类型 | 支持异常处理,抛出异常 |

正文

@Autowired 和 @Resource 的区别

默认注入方式不同

@Autowired 默认的注入方式为byType(根据类型进行匹配),也就是说会优先根据接口类型去匹配并注入 Bean (接口的实现类),如果想要指定名称,可以通过@Qualifier配合使用。

@Autowired
private UserSafetyMapper userSafetyMapper;

// 或
@Autowired @Qualifier("userSafetyMapper")
private UserSafetyMapper userSafetyMapper;

    @Resource 默认注入方式为 byName(根据命名进行匹配)。如果无法通过名称匹配到对应的实现类的话,注入方式会变为byType。

    1. 如果同时指定了name和type,则从Spring上下文中找到唯一匹配的bean进行装配,找不到则抛出异常;
    2. 如果指定了name,则从上下文中查找名称(id)匹配的bean进行装配,找不到则抛出异常;
    3. 如果指定了type,则从上下文中找到类型匹配的唯一bean进行装配,找不到或者找到多个,都会抛出异常;
    4. 如果既没有指定name,又没有指定type,则自动按照byName方式进行装配;如果没有匹配,则回退为一个原始类型进行匹配,如果匹配则自动装配。
    // 1.默认注入方式
    @Resource
    private UserSafetyMapper userSafetyMapper;
    

    // 2.指定注入方式
    @Resource(name = "userSafetyMapper", type = UserSafetyMapper.class)
    private UserSafetyMapper userSafetyMapper;

      提供者不同

      @Autowired 是spring提供的注解,@Resource 是JDK提供的注解

      与[转帖]@Autowired 和 @Resource 的区别相似的内容:

      [转帖]@Autowired 和 @Resource 的区别

      @Autowired 和 @Resource 的区别 默认注入方式不同 @Autowired 默认的注入方式为byType(根据类型进行匹配),也就是说会优先根据接口类型去匹配并注入 Bean (接口的实现类),如果想要指定名称,可以通过@Qualifier配合使用。 @Autowired priv

      [转帖]

      Linux ubuntu20.04 网络配置(图文教程) 因为我是刚装好的最小系统,所以很多东西都没有,在开始配置之前需要做下准备 环境准备 系统:ubuntu20.04网卡:双网卡 网卡一:供连接互联网使用网卡二:供连接内网使用(看情况,如果一张网卡足够,没必要做第二张网卡) 工具: net-to

      [转帖]

      https://cloud.tencent.com/developer/article/2168105?areaSource=104001.13&traceId=zcVNsKTUApF9rNJSkcCbB 前言 Redis作为高性能的内存数据库,在大数据量的情况下也会遇到性能瓶颈,日常开发中只有时刻

      [转帖]ISV 、OSV、 SIG 概念

      ISV 、OSV、 SIG 概念 2022-10-14 12:29530原创大杂烩 本文链接:https://www.cndba.cn/dave/article/108699 1. ISV: Independent Software Vendors “独立软件开发商”,特指专门从事软件的开发、生产、

      [转帖]Redis 7 参数 修改 说明

      2022-06-16 14:491800原创Redis 本文链接:https://www.cndba.cn/dave/article/108066 在之前的博客我们介绍了Redis 7 的安装和配置,如下: Linux 7.8 平台 Redis 7 安装并配置开机自启动 操作手册https://ww

      [转帖]HTTPS中间人攻击原理

      https://www.zhihu.com/people/bei-ji-85/posts 背景 前一段时间,公司北京地区上线了一个HTTPS防火墙,用来监听HTTPS流量。防火墙上线之前,邮件通知给管理层,我从我老大那里听说这个事情的时候,说这个有风险,然后意外地发现,很多人原来都不知道HTTPS防

      [转帖]关于字节序(大小端)的一点想法

      https://www.zhihu.com/people/bei-ji-85/posts 今天在一个技术群里有人问起来了,当时有一些讨论(不完全都是我个人的观点),整理一下: 为什么网络字节序(多数情况下)是大端? 早年设备的缓存很小,先接收高字节能快速的判断报文信息:包长度(需要准备多大缓存)、地

      [转帖]awk提取某一行某一列的数据

      https://www.jianshu.com/p/dbcb7fe2da56 1、提取文件中第1列数据 awk '{print $1}' filename > out.txt 2、提取前2列的文件 awk `{print $1,$2}' filename > out.txt 3、打印完第一列,然后打

      [转帖]awk 中 FS的用法

      https://www.cnblogs.com/rohens-hbg/p/5510890.html 在openwrt文件 ar71xx.sh中 查询设备类型时,有这么一句, machine=$(awk 'BEGIN{FS="[ \t]+:[ \t]"} /machine/ {print $2}' /

      [转帖]Windows Server 2022 简体中文版、英文版下载 (updated Oct 2022)

      https://sysin.org/blog/windows-server-2022/ Windows Server 2022 正式版,2022 年 10 月更新,VLSC Posted by sysin on 2022-10-27 Estimated Reading Time 8 Minutes