首页 > 其他分享 >@Autowired和@Resource有哪些区别

@Autowired和@Resource有哪些区别

时间:2024-07-09 13:31:18浏览次数:16  
标签:Resource 哪些 Autowired bean 查找 注解 注入

一、注解的作用

@Autowired和@Resource都是用来实现Bean的自动注入功能。

二、@Autowired和@Resource的区别

1、所属的包不同

  • @Autowired是Spring的注解。
  • @Resource是JSR-250的注解。

IDEA 有时候会在 @Autowired 注解上面提示Field injection is not recommended (字段注入是不被推荐的)这个警告,虽然并不属于报错,但是确实是警告的存在。
就是因为@Autowired是Spring提供的,它是特定IoC提供的特定注解,这就导致了应用与框架的强绑定,一旦换用了其他的IoC框架,是不能够支持注入的。
而 @Resource是 Java 自己提供的,它是Java标准,所以它是与框架无关的。

2、依赖注入的支持不同

  • @Autowired能够用在构造函数、setter方法、属性上。
  • @Resource只能用在setter方法、属性上。

3、注入的默认类型不同

依赖注入功能,是先在容器中查找需要的对象,再将对象注入到当前类中。
查找的方式有两种:

  • byType:根据类型注入,如果容器中有多个相同类型的bean,则注入失败。
  • byName:根据名称注入,如果容器中有多个相同名称的bean,则注入失败。

@Autowired和@Resource都用到了byType和byName两种方式,但二者的使用顺序却不同。

@Autowired默认按类型注入,默认情况下必须要求依赖对象必须存在,如果要允许null值,可以设置它的required属性为false。
如果根据类型找不到合适的bean,则会抛出异常。
如果根据类型找到了多个bean,则再根据bean的名称进行匹配,如果匹配成功,则注入成功;如果匹配失败,则抛出异常。

@Autowired自动注入顺序流程图:

@Resource默认按名称注入,如果按名称注入找不到合适的bean,则再按类型注入。

@Resource自动注入顺序流程图:

也就是:

  • @Autowired默认先根据类型查找,如果找到多个,再根据名称查找;
  • @Resource默认先根据名称查找,如果找不到,再按类型查找。

三、总结

在Spring项目中,这两个注解一般可以互相替换。
主要是要了解它们的注入顺序。

标签:Resource,哪些,Autowired,bean,查找,注解,注入
From: https://www.cnblogs.com/anboy/p/18291604

相关文章

  • 固件损坏现象有哪些?固件损坏怎么修复?
    固件,是固化在硬件中的软件,存储着计算机系统中硬件设备最基底层最直接的软件。通俗地说,固件即硬盘的系统程序。就和电脑的操作系统一样,电脑要进入操作系统才能进行操作。硬盘也一样,必须完整地读取出固件信息才能正常地识别硬盘。那么,我们平时怎么知道硬盘固件损坏了呢?其实我们可以......
  • 图片翻译中文软件有哪些?精选5款高效的翻译工具
    你喜欢旅行吗?如果是的话,当你发现自己在一个语言不通的环境中,第一反应往往是掏出手机,试图查找那陌生词汇的中文意思,这无疑是个实用的方法。但如果整段文字都是陌生语言的话怎么办呢?这时候图片翻译工具就派上用场了。本文将介绍5个图片翻译软件在线翻译工具,让你在碰到当地语言......
  • 大模型算法方向实习会经常提问哪些问题?看完手撕面试官拿下offer!
    现互联网研发一枚,曾拿过多个算法/研发岗SPoffer,简要介绍一下大模型算法岗面试内容和如何准备面试。大模型算法岗的面试内容,实际上可以拆解成两部分,一是算法岗通用的面试内容,二是大模型专有相关部分。算法岗通用面试内容这部分内容很重要,因为通用的面试内容可以适用于不同......
  • 跨境传输需要遵守哪些准则,如何做到有效管控?
    在全球化的商业环境中,跨国企业面临着数据跨境传输的挑战。随着业务的扩展,企业需要在不同国家和地区之间高效、安全地传输大量数据。选择合适的跨境传输方案对于保障数据安全、提高业务效率、遵守法律法规至关重要。跨境传输数据需要遵守的准则和规定主要包括以下几点:1.数据安全......
  • 期刊论文中的结果、讨论、结论三者的区别是什么,他们三个在撰写的时候分别应该包含哪些
    问题描述:期刊论文中的结果、讨论、结论三者的区别是什么,他们三个在撰写的时候分别应该包含哪些内容?问题解答:在期刊论文中,结果(Results)、讨论(Discussion)和结论(Conclusion)是非常重要的部分,它们各自有明确的写作目的和内容要求。以下是对这三部分的详细解释及其区别:结果(Results......
  • 期刊论文一般包含引言、方法与材料、实验、结果、讨论、结论六个部分,或者将结果与讨论
    问题描述:期刊论文一般包含引言、方法与材料、实验、结果、讨论、结论六个部分,或者将结果与讨论合并就是五个部分。引言、方法与材料、实验、结果、讨论、结论六个部分在撰写时,分别包含哪些内容,这六个部分的区别是什么?问题解答:在撰写期刊论文时,通常包括引言(Introduction)、方......
  • 期刊论文中的结果、结论两者的区别是什么,他们两个在撰写的时候分别应该包含哪些内容?
    问题描述:期刊论文中的结果、结论两者的区别是什么,他们两个在撰写的时候分别应该包含哪些内容?问题解答:在期刊论文中,结果(Results)和结论(Conclusion)是两个重要的部分,它们在目的、内容和写作方式上有显著的区别。以下是对它们的详细解释:结果(Results)目的:客观地报告研究的实际发......
  • 常用的一些git命令与讲解,看看你还有哪些不知道
    Git是一个分布式的版本控制系统,用作Linux内核代码的管理,Git同样可以作为部署工具所使用。GitHub的独特在于从另外一个项目进行分支的简易性。为一个项目贡献代码非常简单:首先点击项目站点的“fork”的按钮,然后将代码检出并将修改加入到刚才分出的代码库中,最后通过内建......
  • @AutoWired和@Resource的区别
    @AutoWired和@Resource的区别来源不同:@AutoWired是Spring提供的注解.@Resource是JavaEE提供的,来源于java.annotation包,是JSR-250的一部分,所以,@Resource不是Spring特有的,它可以使用在所有遵循JavaEE标准的项目中。注入方式不同:@AutoWired默认是按照byType进行依赖注......
  • 免费零代码平台有哪些?看看敲敲云
    敲敲云简介敲敲云是一个APaaS零代码平台,帮助企业快速搭建个性化业务应用。用户不需要编码就能够搭建出用户体验上佳的销售、运营、人事、采购、进销存、CRM、ERP、OA等核心业务应用,打通企业内部数据,也能够通过API和Webhook和其他系统对接。平台内的自动化工作流还可以实......