自动注入@resource和@autowired的区别

news/2025/3/21 21:36:40/

标题自动注入@resource和@autowired的区别

@Resource : 按名称进行注入

来源:JSR-250标准注解,属于Java EE的一部分。
默认行为:按名称(byName)注入。如果找不到指定名称的Bean,则按类型(byType)注入。
使用场景:
当希望通过名称注入Bean时。
当希望代码与Spring框架解耦,使用标准注解时。

按名称注入适合以下场景:

1.容器中存在多个相同类型的Bean。

java">public interface UserService {void execute();
}@Component("userServiceA") // 指定Bean的名称为userServiceA
public class UserServiceA implements UserService {@Overridepublic void execute() {System.out.println("UserServiceA is running");}
}@Component("userServiceB") // 指定Bean的名称为userServiceB
public class UserServiceB implements UserService {@Overridepublic void execute() {System.out.println("UserServiceB is running");}
}

例如,我的UserService有两种不一样的实现execute的方法,这样我在调用UserService的时候,就需要@Resource(name = “userServiceA”)一下,明确对应的UserService具体是哪一个。

2.需要明确指定Bean的名称。
3.使用第三方库或框架时,Bean名称固定。
4.希望代码与Spring框架解耦。

@Autowired : 按类型进行注入

来源:Spring框架自带的注解。
默认行为:按类型(byType)注入。如果找到多个匹配的Bean,会按名称(byName)注入。
使用场景:1.希望通过类型注入Bean时。2.希望结合@Qualifier注解来指定具体的Bean名称时。

按类型注入适合以下场景:

1.Bean类型唯一
2.不关心Bean的具体名称。
3.使用接口或抽象类。
4.结合@Primary或@Qualifier注解。
5.动态代理场景。
6.框架或库的设计。
7.单元测试。

Tips(个人理解,若有错误请指出)

1.在spring框架中,如果容器中仅有一种类型的Bean,即你的Bean构造体没有利用@Component来实现多种方法时,那这时候两种都可以使用;
2. @Autowired 使用的spring框架,而@Resource使用的是java框架,因此正常情况下,可以优先考虑使用@Resource。


http://www.ppmy.cn/news/1580975.html

相关文章

单调队列【C/C++】

当我在网上搜索了一大堆单调队列的文章后, 我人傻了!? 单调队列不应该很难吗?? 不应该是,像 优先队列 那样,站在 堆 的肩膀上,极尽升华吗??? …

搭建主从服务器

任务需求 客户端通过访问 www.nihao.com 后,能够通过 dns 域名解析,访问到 nginx 服务中由 nfs 共享的首页文件,内容为:Very good, you have successfully set up the system. 各个主机能够实现时间同步,并且都开启防…

利用github部署项目

挂载GitHub Pages的方法 基本步骤 创建仓库&#xff1a; 在GitHub上创建一个新的仓库。如果使用自定义域名&#xff0c;则仓库名应为<username>.github.io&#xff1b;否则可以是任意名称。 启用GitHub Pages&#xff1a; 进入仓库的设置页面&#xff0c;在“Pages”部…

TCP 通信流程图

下面给出一个详细的 TCP 通信流程图&#xff0c;演示 客户端&#xff08;Client&#xff09; 与 服务器&#xff08;Server&#xff09; 之间通过 TCP 协议进行通信时的各个步骤。这里假设&#xff1a; 服务器 IP&#xff1a;192.168.1.100&#xff0c;监听 80 端口客户端 IP&…

【MATLAB例程】AOA(到达角度)法,多个目标定位算法,三维空间、锚点数量自适应(附下载链接)

给出AOA方法下的多目标定位&#xff0c;适用三维空间&#xff0c;锚点数量>3即可&#xff0c;可自定义目标和锚点的数量、坐标等。 文章目录 代码讲解概述功能代码结构 运行结果源代码 代码讲解 概述 本文所述的MATLAB代码实现了一种基于到达角 &#xff08; A O A &#…

耘想Docker版Linux NAS的安装说明

耘想LinNAS&#xff08;Linux NAS&#xff09;可以通过Docker部署&#xff0c;支持x86和arm64两种硬件架构。下面讲解LinNAS的部署过程。 1. 安装Docker CentOS系统&#xff1a;yum install docker –y Ubuntu系统&#xff1a;apt install docker.io –y 2. 下载LinNas镜像…

ArcGIS10.X影像智能下载!迁移ArcGIS Pro批量智能高清影像下载工具至ArcGIS!

上周我们分享了 我写的一个ArcGIS Pro版批量下载高清影像&#xff08;谷歌、天地图、ESRI等&#xff09;工具给大家&#xff0c;Deepseek我&#xff01;写一个ArcGIS Pro批量下载高清影像&#xff08;谷歌、天地图、ESRI等&#xff09;工具给大家-CSDN博客文章浏览阅读130次。深…

单片机外设快速入门篇(五)——GPIO篇

文章目录 一、GPIO输入模式​二.GPIO输出模式三.GPIO配置步骤 一、GPIO输入模式 ​1. 浮空输入&#xff08;Floating Input&#xff09;​ ​原理&#xff1a;引脚电平完全由外部电路决定&#xff0c;无内部上拉或下拉电阻。 ​特点&#xff1a; 悬空时电平不确定&#xff08;…