@Resource注解是什么作用,和@bean区别是什么?

@Resource 注解就像是 Java 开发的快递小哥,专门用来送依赖关系到你的代码门口。它的主要工作就是帮你实现依赖注入,把其他组件(比如类、对象、bean,啥的)送到你需要的地方。

具体来说:

  1. 依赖注入: @Resource 负责把其他组件注入到你标记的字段、方法或构造函数里。就像是在给你的类里面塞积木,让你的代码更好玩、更有趣。

  2. 指定注入的对象: 你可以通过 name 属性指定你要送进来的依赖的名字,就像在点外卖时指定你要的菜名一样。

  3. 按名称匹配: 如果你没指定名字,它会按照字段或方法的名字去找对应的依赖。就像找猫奴一样,你叫“喵喵”,它就找个“喵喵”的对象送过来。

  4. 按类型匹配: 如果你连名字都不想管,直接放 @Resource,它就会根据类型找个对应的依赖。当然,如果有多个同类型的对象,你可以加点儿料,比如 @Qualifier 注解,指定具体哪个。

其实@Resource 就是你的 Java 代码中的“送货小哥”,让依赖关系更清晰,代码更整洁。有了它,你的代码就像是住进了豪华别墅,各种服务都送上门啦~

到这里会有人提出疑问了。它和@bean的区别是什么呢?

@Bean@Resource 是两种不同的方式来处理依赖注入的。具体来说:

  • @Bean 注解: 你在配置类里用 @Bean 注解方法,Spring 会调用这个方法,把返回的对象交给容器,然后你就可以通过 @Autowired 或者 ApplicationContext 来获取这个 Bean。

    @Configuration public class MyConfig { @Bean public MyService myService() { return new MyService(); } }

  • @Resource 注解: 用在字段、方法或构造函数上,告诉 Spring 在容器中找一个匹配的对象注入进来。

    public class MyService { @Resource private MyDao myDao; // 其他代码... }

所以,两者都可以实现依赖注入,你可以根据自己的喜好和项目需要选择使用哪一种方式。有时候,@Bean 更适合在配置类中定义一些复杂的 Bean,而 @Resource 更适合在业务类中注入简单的依赖。

如果你在普通的业务类中使用 @Bean 注解,Spring 是不会识别它的,也就不能正确地将其注册为 Bean。通常在业务类中使用 @Autowired 或者 @Resource 这样的注解来进行依赖注入。

所以,@Bean 注解主要用在配置类的方法上,帮助你将对象注册到 Spring 容器中。

拓展

  • @Autowired 是 Spring 框架提供的注解,用于实现依赖注入。它是 Spring 比较常用且强大的注解之一。

  • 按类型注入: 通过类型进行匹配,如果容器中存在多个相同类型的 Bean,可以结合 @Qualifier 注解指定具体的 Bean。

  • 支持构造函数注入: 可以用在构造函数上,通过构造函数注入依赖。

如果你在一个纯粹的 Spring 项目中,或者你对容器的选择没有太多限制,建议使用 @Autowired 它是 Spring 的一部分,更灵活且功能强大。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

SQL进阶理论篇(八):SQL查询的IO成本

文章目录 简介数据库缓冲池查看缓冲池的大小数据页加载的三种方式通过 last_query_cost 统计 SQL 语句的查询成本总结参考文献 简介 本节将介绍磁盘IO是如何加载数据的,重点介绍一下数据库缓冲池的概念。主要包括: 什么是数据库缓冲池,它在…

云架构俭约之道七法则(The Frugal Architect)

授权声明:本篇文章授权活动官方亚马逊云科技文章转发、改写权,包括不限于在 亚马逊云科技开发者社区, 知乎,自媒体平台,第三方开发者媒体等亚马逊云科技官方渠道 文章目录 一、前言关于 Law 与 Rule 的区别 二、云架构俭约之道七法…

【算法刷题】每日打卡——动态规划(1)

背包问题 例题一 有 N件物品和一个容量是 V 的背包。每件物品只能使用一次。 第 i件物品的体积是 vi,价值是 wi。 求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。 输出最大价值。 输入格式 第一行两个整数…

深度学习python编译器的配置及法宝函数的作用

一、python编辑器的配置(pycharm 和 jupyter) (1)pycharm 在pycharm导入conda环境: 新建项目,更改编译器,选择已有的编译器 选择python.exe时会出现错误:找不到conda可执行文件 …

太空旅行:计算机技术的崭新航程

太空旅行:计算机技术的崭新航程 一、引言 自古以来,人类就对浩渺的宇宙充满了无尽的好奇和渴望。随着科技的飞速发展,太空旅行已经从科幻小说中的构想变为现实。在这个过程中,计算机技术起到了不可或缺的作用。从阿波罗时代的初…

EDT:On Efficient Transformer-Based Image Pre-training for Low-Level Vision

EDT:On Efficient Transformer-Based Image Pre-training for Low-Level Vision 论文地址:On Efficient Transformer-Based Image Pre-training for Low-Level Vision 代码地址:fenglinglwb/EDT: On Efficient Transformer-Based Image Pre…

知识付费小程序开发:技术实践示例

随着知识付费小程序的兴起,让我们一起来看一个简单的示例,使用Node.js和Express框架搭建一个基础的知识付费小程序后端。 首先,确保你已经安装了Node.js和npm。接下来,创建一个新的项目文件夹,然后通过以下步骤创建你…

LabVIEW实时建模检测癌细胞的异常

LabVIEW实时建模检测癌细胞的异常 癌症是全球健康的主要挑战之一,每年导致许多人死亡。世界卫生组织指出,不健康的生活方式和日益严重的环境污染是癌症发生的主要原因之一。癌症的发生通常与基因突变有关,这些突变导致细胞失去正常的增长和分…

excel手撕神经网络(只需高中数学基础)

神经网络最基础部分是由神经元组成,一个神经元相当于是一个一次函数,yaxb 即在已知x,和y情况下,怎么使用神经网络求解a和b 如下是使用excel求解的神经网络,可以方便理解神经网络运行原理 excel玩具神经网络下载地址 百…

蓝桥杯专题-真题版含答案-【排序法 - 改良的选择排序】【插补搜寻法】【稀疏矩阵】【欧拉与鸡蛋】

Unity3D特效百例案例项目实战源码Android-Unity实战问题汇总游戏脚本-辅助自动化Android控件全解手册再战Android系列Scratch编程案例软考全系列Unity3D学习专栏蓝桥系列ChatGPT和AIGC 👉关于作者 专注于Android/Unity和各种游戏开发技巧,以及各种资源分…

centos8stream 升级 sqlite3 ,解决 SQLite 3.27 or later is required (found 3.26.0).

服务器环境是centos8stream, 默认的sqlite是 3.26 ,因此,需要升级。 sqlite官网:SQLite Download Page 1.从官网下载最新源码包 cd /opt/ wget https://www.sqlite.org/2023/sqlite-autoconf-3440200.tar.gz tar xvf sqlite-autoconf-344020…

【webstrom】【idea】修改git历史提交记录

webstrom修改git历史提交记录 历史记录中有3条提交记录 此时2中的提交记录需要更新,我们可以在2中右击,选择“从这里执行交互式变基” 在弹框中选择需要修改提交记录2右击,然后选择“停止以编辑” 启动变基 更改2中内容 提交对2的更改 …

机器学习 高维数据可视化:t-SNE 降维算法

✅作者简介:人工智能专业本科在读,喜欢计算机与编程,写博客记录自己的学习历程。 🍎个人主页:小嗷犬的个人主页 🍊个人网站:小嗷犬的技术小站 🥭个人信条:为天地立心&…

Flink中的时间和窗口

在批处理统计中,我们可以等待一批数据都到齐后,统一处理。但是在实时处理统计中,我们是来一条就得处理一条,那么我们怎么统计最近一段时间内的数据呢?引入“窗口”。 所谓的“窗口”,一般就是划定的一段时…

CentOS 7系统加固详细方案SSH FTP MYSQL加固

一、删除后门账户 修改强口令 1、修改改密码长度需要编译login.defs文件 vi /etc/login.defs PASS_MIN_LEN 82、注释掉不需要的用户和用户组 或者 检查是否存在除root之外UID为0的用户 使用如下代码,对passwd文件进行检索: awk -F : ($30){print $1) …

(C++)VS下sizeof(string(““))与linux-g++下sizeof(string(““))大小区别及原因剖析

个人主页:Lei宝啊 愿所有美好如期而遇 说明 博主是x86平台,所以下面的结果是28;x64平台下是40,size_t变了,由int变long long。 接下来我们先来介绍 vs 下string的数据结构 我们可以看到有一个_Buf数组,…

极坐标下的牛拉法潮流计算57节点MATLAB程序

微❤关注“电气仔推送”获得资料(专享优惠) 潮流计算: 潮流计算是根据给定的电网结构、参数和发电机、负荷等元件的运行条件,确定电力系统各部分稳态运行状态参数的计算。通常给定的运行条件有系统中各电源和负荷点的功率、枢纽…

大模型时代-大模型开发入门

一、 学习大模型的入门知识 深度学习基础知识:了解深度学习中的基本概念、算法和模型,包括神经网络、卷积神经网络、循环神经网络等。 编程能力:掌握至少一种编程语言,如Python、C等,熟悉常用的深度学习框架&#xff…

解锁数据探索新时代,JetBrains DataGrip 2023 Mac/win中文版下载

JetBrains DataGrip 2023 Mac/win,作为一款全新的数据库管理和开发工具,为数据工程师、分析师和开发人员提供了强大的功能和工具,帮助他们更高效地处理和分析数据。无论你是使用Mac还是Windows系统,都能够通过这款软件轻松驾驭数据…

【halcon深度学习】目标检测的数据准备过程中的一个库函数determine_dl_model_detection_param

determine_dl_model_detection_param “determine_dl_model_detection_param” 直译为 “确定深度学习模型检测参数”。 这个过程会自动针对给定数据集估算模型的某些高级参数,强烈建议使用这一过程来优化训练和推断性能。 过程签名 determine_dl_model_detection…
最新文章