java面试:@Resource和@Autowired的区别

我们知道Spring的IOC控制反转的具体实现是通过依赖注入DI来完成的,可以说IOC是思想,而DI是实现的手段,所以Spring的生态衍生出了两个实现着依赖注入功能的注解,那就是@Reasource和@Autowired,而这两个注解一定存在一定上功能的差异,今天小编就和大家把这个问题和大家进行一下分享,希望大家能有所收获。

1.两者的注解来源不同

@Resource是属于java EE提供的,是在RT包下封装在javax.annotation当中的,@Autowire注解是在Spring框架当中去提供的,而非java底层原生态的。

2.两者的装配方式不相同

@Resource是默认根据名称进行查询,假设名称不存在,就会根据我们的类型去查找,假设存在名称相同的对象却用不同的类型去接受对象,那就会报错。

而假设找不到具有相同名称的对象,那就会通过类型去进行查找,而即使名称并不符合,也会直接查找到类型相同的容器对象。

@Autowired是默认根据类型去查找,假设一个类型确实存在多种实现,就会根据名称去做匹配,找到IOC当中所对应的对象,但假设没有对应的名字的实现类那就会报错。

而假设只有一个实现类那就会直接将这个类获取返回,即使其名称并不相同,假设你需要拥有相同的名称查找,但又想自定义不同的名字,那就可以通过Qualifier配合使用。

今天的分享就到这里了,希望这篇博客能给你一些帮助,让你对关于@Resource和@Autowired的区别的问题得到进一步的提升,在面试的时候能从容面对面试官。

相关推荐
傻啦嘿哟4 小时前
某招聘平台爬虫:爬取招聘岗位数据,分析各城市薪资水平
开发语言·爬虫·python
2501_933670794 小时前
2026秋招量化分析岗技能栈:Python、SQL、统计建模、回测项目怎么准备
开发语言·python·sql
yxlalm4 小时前
Spring AI+RAG 01-项目背景与技术选型
java·人工智能·spring
程序员清风5 小时前
Java 后端高并发设计:线程池、限流、熔断与降级
java·数据库·oracle
李少兄5 小时前
JavaScript 数据类型完全指南
开发语言·javascript·ecmascript
Seoyoneh5 小时前
Agentic Workflow编排架构:云客服从“被动响应”迈向“主动执行”的技术实现
java·开发语言·架构
海南java第二人5 小时前
对外 API 如何保证幂等性?插入数据 / 上传表格场景全方案汇总
java·幂等性
tryxr6 小时前
Chat2Excel 文件服务模块上传文件功能开发
java·项目·oss·easyexcel·文件服务
Tangyuewei6 小时前
Java 写 Agent:模型只是组件
java·开发语言
小玮看世界6 小时前
[Python]从合并区间到传感器融合区:合并区间在传感器区域融合的实际落地
开发语言·python