@Resource注解 和 @Autowired 注解的区别!

news2024/12/29 10:15:54

@Resource注解 和 @Autowired 注解的区别!

前言:

实习时候第一次拉取了企业级代码(微服务),发现基本上都是@Resource注解,自己之前平时没仔细思考 就是按照自己的习惯用的@Autowired,平时开发也是单体架构的系统.

理解:

@Autowired

image-20240721223707545

@Autowired是spring提供的一个注解,默认是根据类型实现Bean的依赖注入.里面有一个required属性.默认值是true,表示强制要求bean实例的一个注入.应用启动的时候如果IoC 容器里面不存在对应类型的Bean,启动就会报错.

如果我们不希望去实现自动注入,可以把required这个属性设置为false

其次:

image-20240721224052769

如果在Spring IoC容器里面存在多个相同类型的Bean实例由于@Autowired是根据类型注入Bean的所以Spring容器启动的时候会提示错误例如这里的 hello1 hello2

image-20240721224306241

原本只能注入一个单实例Bean但是在IoC容器里面会有多个导致注入失败

针对这个问题: 我们可以使用@Primary或者@Qualifier注解来解决

image-20240721224558299

@Primary表示主要的Bean 当存在多个相同类型的Bean的时候优先使用带了这个注解的Bean

@Qualifier注解类似于条件筛选,可以根据Bean的名字去找到需要装配的目标Bean

@Resource

image-20240721224737466

@Resource是JDK里面提供的注解.和@Autowired使用的方式是完全相同的,最大的差异化存在于 可以支持ByName 和ByType两种方式.

如果使用name, Spring会根据bean的名字进行依赖注入,如果使用type会根据类型实现依赖注入.

假设两个属性都没有配置的情况下,会现根据定义的属性名字去匹配,如果没有匹配成功,会再去根据类型来匹配,如果两个都没有匹配到就会报错

总结:

  • 两个注解都是Spring生态里面去实现Bean的依赖注入

  • @Resource是根据nametype进行注入的,默认name,是JDK提供的

  • @Autowired是根据类型注入的.是spring中定义的注解,如果需要支持name进行匹配需要配合@Primary或者@Qualifier来实现

参考:

【Java面试】原来@Resource 和 @Autowired 区别这么简单!_哔哩哔哩_bilibili

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

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

相关文章

[RL] 马尔可夫决策过程基础

文章结构 目录 一、马尔可夫过程 马尔可夫性质 二、马尔可夫奖励过程 回报(Return) 贝尔曼方程(Bellman equation) 贝尔曼方程解析解 蒙特卡洛方法​ 马尔可夫决策过程​ MDP和马尔可夫过程/马尔可夫奖励过程的区别 马…

循环机制(event loop)之宏任务和微任务

一、前言 js任务分为同步任务和异步任务,异步任务又分为宏任务和微任务,其中异步任务属于耗时的任务。 二、宏任务和微任务有哪些? 宏任务:整体代码script、setTimeout、setInterval、setImmediate(Node.js&#xff…

nginx conf.d 模块化配置

文章目录 前言nginx conf.d 模块化配置1. 概述2. 优势3. 配置 前言 如果您觉得有用的话,记得给博主点个赞,评论,收藏一键三连啊,写作不易啊^ _ ^。   而且听说点赞的人每天的运气都不会太差,实在白嫖的话&#xff0c…

关卡1-2:Python关卡

关卡1-2:Python关卡 一、python实现wordcount二、通过本地VSCODE连接internStudio与debug2.1使用本地的VSCODE连接InternStudio2.2 debug插件安装2.3 debug进行时2.3.1 代码准备2.3.2 选择python解释器2.3.3 打断点 一、python实现wordcount 采用python实现经典任务…

【C++】红黑树模拟实现STL库中的map与set

目录 改造红黑树 红黑树的迭代器 map的模拟实现 set的模拟实现 在上一篇博客中&#xff0c;我们实现了红黑树&#xff0c;但是红黑树节点中的值是pair<K,V> _kv形式&#xff0c;这种红黑树适用于map的底层&#xff0c;那么如果我们想要红黑树节点中的值是key的形式&a…

神经网络处理器模拟器的一点思考

一 神经网络处理器 通常基于FPGA的神经网络处理器进行部署某种网络&#xff0c;考虑的因素较多&#xff0c;具体包括网络模型的不同&#xff0c;涵盖不同的算子、激活函数、调度策略等等&#xff1b;具体硬件实现&#xff0c;涉及神经网络处理器并行度、硬件资源消耗&#xff0…

【C++高阶】哈希函数底层原理探索:从算法设计到实现优化

&#x1f4dd;个人主页&#x1f339;&#xff1a;Eternity._ ⏩收录专栏⏪&#xff1a;C “ 登神长阶 ” &#x1f921;往期回顾&#x1f921;&#xff1a;模拟实现 map与set &#x1f339;&#x1f339;期待您的关注 &#x1f339;&#x1f339; ❀哈希 &#x1f4da;1. unord…

MinerU、Magic-PDF、Magic-Doc

文章目录 一、关于 MinerU二、Magic-PDF1、简介2、项目全景3、流程图4、子模块仓库 三、Magic-PDF 上手指南1、配置要求2、安装配置1. 安装Magic-PDF2. 下载模型权重文件3. 拷贝配置文件并进行配置4. 使用CUDA或MPS加速推理CUDAMPS 3、使用说明1) 通过命令行使用直接使用更多用…

鑫创SSS1700USB音频桥芯片USB转IIS芯片

鑫创SSS1700支持IIC初始外部编&#xff08;EEPROM选项),两线串行总线&#xff08;I2C总线&#xff09;用于外部MCU控制整个EEPROM空间可以通过MCU访问用于主机控制同步的USB HID外部串行EEPROM&#xff08;24C02~24C16&#xff09;接口&#xff0c;用于客户特定的USB视频、PID、…

有空多刷刷算法题:回溯理论基础、leecode-77:组合、leecode:组合总和 III

回溯算法 一、理论基础 参考代码随想录&#xff0c;仅作记录学习之用 回溯是递归的副产品&#xff0c;只要有递归就会有回溯因为回溯的本质是穷举&#xff0c;穷举所有可能&#xff0c;然后选出我们想要的答案&#xff0c;如果想让回溯法⾼效⼀些&#xff0c;可以加⼀些剪枝…

华为OD机试2024年C卷D卷 - 构成指定长度字符串的个数/字符串拼接(Java)

华为OD机试&#xff08;C卷D卷&#xff09;2024真题目录 题目描述&#xff1a;构成指定长度字符串的个数 (本题分值200) 给定 M&#xff08;0 < M ≤ 30&#xff09;个字符&#xff08;a-z&#xff09;&#xff0c;从中取出任意字符&#xff08;每个字符只能用一次&#x…

PostgreSql创建触发器并增加IF判断条件

在 PostgreSQL 中&#xff0c;可以使用触发器&#xff08;Trigger&#xff09;来在表上定义自定义的插入&#xff08;INSERT&#xff09;、更新&#xff08;UPDATE&#xff09;和删除&#xff08;DELETE&#xff09;操作的行为。触发器是与表相关联的特殊函数&#xff0c;它们在…

docker的学习(二):docker常用的高级技术总结

简介 docker的一些知识点的总结 UnionFS 分层&#xff0c;轻量级&#xff0c;高性能的文件系统&#xff0c;支持一层层的叠加功能来修改文件系统。 一次同时加载多个文件系统&#xff0c;把各层文件系统叠加起来&#xff0c;最终文件系统会包含所有底层的文件和目录&#xf…

【java SE语法篇】1.运算符

目录 1. 运算符和表达式2. 算数运算符3. 隐式转换4. 强制转换5. 自增自减运算符6. 赋值运算符7. 扩展运算符8. 关系运算符9. 逻辑运算符9.1 & 和 | 的使用&#xff1a;9.2 ^&#xff08;异或&#xff09;的使用&#xff1a;9.3 !&#xff08;取反&#xff09;的使用&#x…

2024年技校大数据实验室建设及大数据实训平台整体解决方案

随着信息技术的迅猛发展&#xff0c;大数据已成为推动产业升级和社会进步的重要力量。为适应市场需求&#xff0c;培养高素质的大数据技术人才&#xff0c;技校作为职业教育的重要阵地&#xff0c;亟需加强大数据实验室的建设与实训平台的打造。本方案旨在提出一套全面、可行的…

如何制作u盘启动盘_制作U盘启动盘详细图文教程

如何制作u盘启动盘&#xff1f;一个U盘如果不做成启动盘的话&#xff0c;就只能当存储用。如果一个U盘做成启动盘的话&#xff0c;可以通过U盘启动进入PE&#xff0c;我们就可以对电脑进行重装系统或分区等一些操作使用了&#xff0c;这个主要用于电脑需要救急的情况下使用。用…

jmeter录制脚本做压力测试

1.录制 第一步 设置浏览器代理&#xff0c;我用的火狐。谷歌、IE也是都可以。 我把端口号改成8082了&#xff0c;这个无所谓的&#xff0c;只要不冲突就可以。 紧接着要往浏览器里添加证书。直接搜索证书。把jmeter的证书导入浏览器。 2.在jmeter里设置 添加线程组、http代…

Another-redis-desktop-manager+ffmpeg

一、Another-redis-desktop-manager 1.点击链接下载&#xff1a;Release v1.6.6 qishibo/AnotherRedisDesktopManager GitHub 2. 傻瓜式安装 二、ffmpeg 1.下载&#xff1a;Builds - CODEX FFMPEG gyan.dev 2.下载对应版本 3.添加环境变量&#xff1a;添加到path里&am…

Intent的基本使用

1.Intent是什么&#xff1f; Intent用于Android程序中各组件&#xff08;Activity、BroadcastReceive、Service&#xff09;的交互&#xff0c;并且可以在组件之间传递数据&#xff0c;分为显式Intent和隐式Intent。 Intent是各个组件之间信息沟通的桥梁&#xff0c;既能在Ac…

【24年7月】最新Hexo+GitHubPages搭建个人博客【一】

Hexo 是一个高效的静态网站生成器&#xff0c;使用简洁的 Markdown&#xff08;或其他模板引擎&#xff09;编写内容&#xff0c;支持丰富的插件和主题&#xff0c;允许用户轻松定制网站。它通过将文本转换为静态HTML页面&#xff0c;使得网站加载速度快&#xff0c;易于部署&a…