关于@Autowired和@Resource的详细讲解

news/2024/12/22 18:30:42/

@Autowired@Resource 都是 Java 中用于进行依赖注入的注解,它们可以用于将一个对象引用注入到另一个对象中,从而实现对象之间的协作。

@Autowired

@Autowired 是 Spring 框架提供的注解,它可以用于自动装配 bean,即将一个 bean 注入到另一个 bean 中。

使用方式:

  1. 字段注入:
@Autowired
private SomeService someService;
  1. 构造函数注入:
private final SomeService someService;@Autowired
public SomeController(SomeService someService) {this.someService = someService;
}
  1. 方法注入:
@Autowired
public void setSomeService(SomeService someService) {this.someService = someService;
}

工作原理:

Spring 在启动时会扫描应用程序上下文中的所有 bean,并将它们自动装配到相应的依赖项中。它会根据类型进行匹配,如果存在多个类型匹配的 bean,则会根据变量名进行匹配。

@Resource

@Resource 是 JavaEE 提供的注解,它也可以用于进行依赖注入。

使用方式:

@Resource
private SomeService someService;

工作原理:

@Resource 默认按照名称进行注入,如果找不到与依赖项名称匹配的 bean,则会尝试按照类型进行匹配。可以通过 name 属性指定要注入的 bean 的名称。

区别:

  1. 来源不同

    • @Autowired 是 Spring 框架提供的注解。
    • @Resource 是 JavaEE 提供的注解。
  2. 注入方式

    • @Autowired 默认按照类型进行注入,可以通过 @Qualifier 指定具体的 bean 名称。
    • @Resource 默认按照名称进行注入,可以通过 name 属性指定具体的 bean 名称。
  3. 兼容性

    • @Autowired 是 Spring 提供的注解,在 Spring 环境中使用较为方便。
    • @Resource 是 JavaEE 提供的注解,可以在非 Spring 环境中使用。
  4. 可选性

    • @Autowired 默认要求依赖项必须存在,如果找不到匹配的 bean,则会抛出异常。
    • @Resource 可以设置 required = false,允许依赖项不存在。

总的来说,@Autowired 是 Spring 框架提供的一种依赖注入方式,而 @Resource 是 JavaEE 提供的另一种依赖注入方式。在 Spring 环境中,推荐使用 @Autowired,因为它提供了更丰富的功能和更灵活的配置选项。如果需要保持代码的独立性,可以考虑使用 @Resource


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

相关文章

centos定期清理磁盘

centos/linux定期清理磁盘 要定时清理空间,我们需要了解一个命令,find 命令,这个命令可以查询目录下特定文件名,生成日期的文件 小白教程,一看就会,一做就成。 1.查找需要删除的 find /data_back/zhhyba…

RP9学习-1

一.基础 1.10个面板位置示意图: 2.常用英文 1.鼠标点击:click or tap 3.工作区 1.恢复默认工作区: view-->reset view 2.自定义工作区: 可以用鼠标左键拖动面板到独立的位置或者吸附到其他面板上 3.自定义工具栏 view-->T…

Mysql如何对null进行排序(mysql中null排序)

来源:Mysql如何对null进行排序(mysql中null排序) Mysql如何对null进行排序 Mysql是一种开源的关系型数据库管理系统,经常被用于Web开发和应用程序中。在使用Mysql进行数据处理的过程中,很多时候都会遇到需要对null进行…

ArrayList 源码分析

底层实现 底层实现为数组 扩容机制 以无参数构造方法创建 ArrayList 时,实际上初始化赋值的是一个空数组。当真正对数组进行添加元素操作时,才真正分配容量。即向数组中添加第一个元素时,数组容量扩为 10。 jdk8 public boolean add(E e…

【Linux编程Shell自动化脚本】04 其他实用的Shell命令

[TOC] 一、tail命令 打印末尾n行 tail -n 10 file实时监控文件(对于日志文件非常实用) tail -f file二、uniq与sort命令 1. uniq命令 uniq 可检查文本文件中重复出现的行列。 c或–count 在每列旁边显示该行重复出现的次数。 $ uniq -c testfile…

QComboBox 下拉列表 / 组合框控件

1、常用函数: comboBox->addItem("cxq"); //添加下拉选项 combobox->clear(); //清空下拉项comboBox->setCurrentIndex(0);//设置当前的索引 int currentlndex(): //返回当前项的序号,第一个项的序号…

Linux 操作系统云服务器安装部署 Tomcat 服务器详细教程

Tomcat 基本概述 Tomcat 服务器是Apache软件基金会(Apache Software Foundation)的 Jakarta 项目中的一个核心项目,由 Apache、Sun 和其他一些公司及个人共同开发而成。它是一个免费的开放源代码的 Web 应用服务器,属于轻量级应用…

十年JAVA搬砖路——操作系统设备管理

计算机操作系统设备管理涉及管理计算机系统中的各种硬件设备,包括处理器、内存、磁盘驱动器、打印机、网络接口等等 IO控制方式 IO控制方式是指计算机系统中用于控制和管理输入/输出设备的方法和技术。它涉及到如何与设备进行通信、传输数据以及处理设 备的输入和…