SpringBoot注解篇之@Resource与@Autowired

news2024/11/16 16:56:21

在这里插入图片描述

大家好,我是AK,最近在整理Java相关技术知识体系化;本篇主要介绍@Resource 注解和 @Autowired的区别以及使用,适合学习spring框架小伙伴了解学习。

目录

  • 一、@Resource与@Autowired的区别
  • 二、@Resource详解
  • 三、@Autowired详解

一、@Resource与@Autowired的区别

@Resource 注解和 @Autowired 注解都是在 Spring Framework 中进行依赖注入的注解,但它们之间有一些区别:

1. 来源不同:

@Resource 注解是由 Java EE 提供的注解,它定义在 javax.annotation.Resource 包下。
@Autowired 注解是由 Spring 提供的注解,它定义在 org.springframework.beans.factory.annotation.Autowired 包下。

2. 依赖注入策略不同:

@Resource 注解默认按照名称进行依赖注入,如果有多个具有相同类型的依赖,可以使用 name 属性指定依赖的名称。
@Autowired 注解默认按照类型进行依赖注入,如果有多个具有相同类型的依赖,可以使用 @Qualifier 注解或者 @Primary 注解指定依赖的名称或主要依赖。

3. 兼容性不同:

@Resource 注解属于 Java EE 标准的注解,在 Java EE 环境中可以正常使用。
@Autowired 注解是 Spring Framework 提供的特定于 Spring 的注解,它可以在 Spring 环境下使用。

4. 注解属性不同:

@Resource 注解可以添加 name 属性来指定依赖的名称,还可以添加 mappedName 属性来指定依赖的 JNDI 名称。
@Autowired 注解可以添加 required 属性来指定依赖是否必须,默认为 true。
综上所述,@Resource 注解和 @Autowired 注解在功能上有一些相似之处,但也有一些区别。如果你在 Java EE 环境中使用依赖注入,可以选择使用 @Resource 注解;如果在 Spring Framework 环境中使用依赖注入,可以选择使用 @Autowired 注解。需要根据具体的情况选择适合的注解进行依赖注入。

二、@Resource详解

@Resource 是 Java EE 的注解之一,它用于进行依赖注入。@Resource 注解可以应用于字段、方法、参数或者类上。

在 Spring Framework 中,@Resource 注解是由 Spring 提供的用于进行依赖注入的注解之一。当我们在类中使用 @Resource 注解时,Spring 会自动将匹配的依赖注入到目标字段或方法中。

@Resource 的使用方式有以下几种:

注解应用在字段上:

@Resource
private SomeDependency someDependency;

注解应用在 setter 方法上:

private SomeDependency someDependency;

@Resource
public void setSomeDependency(SomeDependency someDependency) {
    this.someDependency = someDependency;
}

注解应用在构造函数上:

private SomeDependency someDependency;

@Resource
public MyService(SomeDependency someDependency) {
    this.someDependency = someDependency;
}

注解应用在方法的参数上:

private SomeDependency someDependency;

@Resource
public void someMethod(@Resource SomeDependency someDependency) {
    this.someDependency = someDependency;
}

需要注意的是,@Resource 注解默认按照名称进行匹配依赖注入。如果有多个具有相同类型的依赖,可以使用 name 属性指定依赖的名称。

@Resource(name = "someDependency2")
private SomeDependency someDependency;

此外,@Resource 注解还可以添加 mappedName 属性来指定依赖的 JNDI 名称。

总结来说,@Resource 注解是用于进行依赖注入的注解,它可以应用于字段、方法、参数或者类上。默认按照名称进行依赖匹配,也可以通过 name 属性或者 mappedName 属性指定依赖的名称。在 Spring Framework 中,@Resource 注解与 @Autowired 注解类似,但略有区别。

三、@Autowired详解

@Autowired 是 Spring Framework 中用于进行依赖注入的注解之一。它可以用于自动装配依赖关系,使得在需要使用某个依赖时,Spring 可以自动将合适的实例注入到目标对象中。

@Autowired 注解可以应用于字段、构造函数、setter 方法和方法的参数上。

使用 @Autowired 注解时,Spring 会根据类型进行依赖匹配,它会尝试找到与目标类型匹配的依赖,并将其注入到目标对象中。如果存在多个匹配的依赖时,可以使用 @Qualifier 注解来指定具体注入哪个实例。

下面是 @Autowired 注解的几种用法:

注解应用在字段上:

@Autowired
private SomeDependency someDependency;

注解应用在构造函数上:

private SomeDependency someDependency;

@Autowired
public MyService(SomeDependency someDependency) {
    this.someDependency = someDependency;
}

注解应用在 setter 方法上:

private SomeDependency someDependency;

@Autowired
public void setSomeDependency(SomeDependency someDependency) {
    this.someDependency = someDependency;
}

注解应用在方法的参数上:

private SomeDependency someDependency;

@Autowired
public void someMethod(SomeDependency someDependency) {
    this.someDependency = someDependency;
}

需要注意的是,默认情况下,@Autowired 注解要求依赖必须存在,即依赖对象不能为空。如果想要指定依赖为非必需,可以设置 required 属性为 false。

@Autowired(required = false)
private SomeDependency someDependency;

此外,@Autowired 注解还可以与 @Qualifier 注解一起使用,从而精确指定要注入的依赖实例。

总结来说,@Autowired 注解是 Spring Framework 中用于进行依赖注入的注解,它可以应用于字段、构造函数、setter 方法和方法的参数上。它根据类型进行依赖匹配,默认要求依赖必须存在,可以使用 @Qualifier 注解指定具体注入哪个实例,也可以设置 required 属性为 false 来声明依赖为非必需。使用 @Autowired 可以简化代码,减少手动注入的工作量。




                                                                                                         ---- 永不磨灭的番号:我是AK



在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1084341.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

13SpringMVC中拦截器的配置(拦截规则)和多个拦截器的preHandle,postHandle执行顺序原理详解

拦截器 Servlet中的过滤器的实现及其原理,参考文章 配置一个拦截器 SpringMVC中请求的处理流程: 用户请求—>listener—>filter—>DispatcherServlet—>filter—>preHandle—>controller—>postHandle 第一步: 编写一个Java类实现HandlerInterceptor(…

基于SpringBoot的在线教育系统

目录 前言 一、技术栈 二、系统功能介绍 普通管理员管理 课程管理员管理 课程信息管理 用户信息管理 讲师信息管理 课程信息查看 讲师信息查看 三、核心代码 1、登录模块 2、文件上传模块 3、代码封装 前言 随着信息技术在管理上越来越深入而广泛的应用&#xff0c…

EDUSRC-记一个SHELL捡漏

目录 ​编辑 Jenkins - println绕过到shell命令执行 语法 Jenkins未授权访问(捡漏失败) Jenkins捡漏 弱口令 脚本执行(println失败) CHATGPT调教绕过 hack渗透视频教程,扫码免费领 Jenkins - println绕过到shell命令执行 语法 org"China Education and…

【excel技巧】如何在Excel表格中添加选项按钮?

不知道大家是否会9遇到需要勾中选项的情况,我们可以在电子表格中制作出可以勾选、选中的选项按钮,今天我们一起学习一下设置方法。 首先,我们需要先在excel工具栏中添加一个功能模块:开发工具 依次点击excel中的文件 – 选项 –…

【问题思考总结】二次型和二次曲面的关系【常数项的改变对曲面的影响】【图文】

问题 今天做到一个题的时候发现,之前记的结论记错了,一个方程本来应该是双叶双曲面我记得,结果答案竟然是圆锥面,后来发现原因是常数项等于0或者不等于0的差别。因此,就这个问题我们来通过图文的方式探讨一下两种情况…

【广州华锐互动】VR建筑施工事故体验:提高工人安全意识和责任感

VR建筑施工事故体验的意义在于通过模拟真实场景和情况,帮助人们更好地理解建筑施工中的安全问题,并提供一种安全、有效的方式来学习和掌握安全技能。 建筑施工是一项高风险的工作,涉及各种复杂的工作环境和操作过程。在现实中,建筑…

剧院建筑三维可视化综合管控平台提高安全管理效率

随着数字孪生技术的高速发展,智慧楼宇也被提上日程,以往楼宇管理存在着设备故障排查困难、能源浪费与管理不足、安全性和风险高等问题,而智慧楼宇数字孪生可视化中控平台,打造智慧楼宇管理一张图,实现了智慧建筑和楼宇…

资深8年测试整理,接口测试必备-加密与签名,让你不再走弯路...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 1、接口加密解密 …

四.镜头知识之放大倍率

四.镜头知识之放大倍率 文章目录 四.镜头知识之放大倍率4.0 前言4.1 镜头的光学放大倍率的计算方法4.2 显示器的电子放大倍率4.2.1 智能硬件产品的显示放大倍率计算案例 4.3 系统放大倍率4.4 智能硬件产品的系统放大倍率计算案例4.4 智能硬件产品的系统放大倍率计算案例 4.0 前…

成绩分析数据的重要性,老师们一定要看过来!

成绩分析数据在教育领域中具有重要性,对于教师们来说是一项必不可少的工具。下面将详细介绍成绩分析数据的重要性,并强调为什么老师们一定要关注和利用这些数据。 **1. 了解学生的学习情况** 成绩分析数据可以帮助教师全面了解学生的学习情况。通过分析…

Jenkins发布失败记录

Exception when publishing, exception message [Exec exit status not zero. Status [127]] 见链接:Jenkins发布时常见异常(持续更新...)_exception when publishing, exception message [exec_码农StayUp的博客-CSDN博客 The remote end hu…

mysql sql语句遍历树结构

mysqlsql语句遍历树结构 MySQL SQL语句遍历树结构实现步骤 理解树结构和遍历算法 在开始之前,我们首先需要了解什么是树结构以及如何遍历树结构。树结构是一种常用的数据结构,由各个节点和节点之间的关系构成。树结构的一个重要应用是表示具有层级关系…

winscope使用方法

Ubuntu下Android T的winscope工具使用方法 1. 在Android的项目源码中,prebuilts/misc/common/winscope目录下 直接使用chrome浏览器打开文件winscope.html 2. 可能会提示adb问题 进入目录development/tools/winscope/adb_proxy,有文件winscope_proxy.…

地球系统模式的应用与进阶丨CESM丨Linux丨CLM丨代码修改等

目录 第一部分 运行前的准备 第二部分 Linux系统及编译 第三部分 CESM原理、结构 第四部分 CESM程序获取、结构及其功能 第五部分 CESM 移植、安装及快速运行 第六部分 CESM 配置选项及数据文件制备 第七部分 CESM单模块运行——以CLM为例 第八部分 CESM 的部分耦合运行…

TOGAF(企业架构)

TOGAF 核心概念(官方原版) 什么是TOGAF? TOGAF?是一种经验证的企业架构方法和框架,被世界领先的组织用于提高业务效率。它是一个企业架构标准,确保企业架构专业人员之间的标准、方法和通信一致,以便我们…

CentOS 7 服务器上创建新用户及设置用户密码有效期

一、创建用户 1、以 root 用户身份登录到 CentOS 服务器 2、运行以下命令以创建新用户: useradd -m -s /bin/bash username其中,username 是您要创建的新用户的用户名。该命令将创建一个新用户并为其分配一个主目录。3、运行以下命令以设置新用户的密码…

泛微低代码平台应用合集,开箱即用,助力组织快速数字化

随着数字化进程的不断深入,各行业对数字化转型的认知不断加深,组织数字化的步伐越来越快。 数字化对组织创新能力加强、生产效率提升、运营成本下降等方面有显著成效,但是组织数字化转型之路面临不少挑战: 数字化挑战 1、数字化…

Android终极大招之全面取代drawble文件实现View圆角背景样式的新方案

简介 最近一直忙于音视频SDK的开发,遇到很多问题,简单来说,就是怎么让别人接入SDK时越简单越好。相信大多数Android开发都会遇到一个场景,给TextView或Button添加背景颜色,修改圆角,描边等需求。一看到这样…

纯干货,怎样用手机提取歌曲伴奏?

提取歌曲伴奏这个需求还是很大的,要想去掉原声只留伴奏,只要使用音分轨人声分离软件中的【音频提取伴奏】功能就能解决这个问题了,下面就给大家具体演示一下操作步骤! 第一步:打开【音分轨】APP,进入首页点…

电脑提示Explorer.exe系统错误该怎么办?

平时我们在使用电脑时,系统有时会提示Explorer.exe系统错误,很多用户在遇到这类问题时不知道该怎么办。遇到Explorer.exe系统错误,该怎么办呢?下面我们一起来了解一下。 怎么修复Explorer.exe系统错误? Explorer.exe是…