当前位置: 首页 > news >正文

@Resource和@Autowired注入区别

注解来源主要匹配方式是否按类型是否按名称是否支持 required=false
@AutowiredSpring 专有按类型 优先✅ 是⚙️ 名称只在歧义时辅助✅ 支持
@ResourceJSR-250(Java 标准)按名称 优先⚙️ 是(次要)✅ 是❌ 不支持

@Autowired:
Spring 自家的注入方式,默认根据类型(byType) 找 Bean,如果找到多个相同类型,再根据变量名匹配 Bean 名称。

@Autowired
private XieqiaoOrgSync xieqiaoOrgSync; // Spring 会找类型为 XieqiaoOrgSync 的 Bean

@Resource:
来自 Java 标准(javax.annotation.Resource),默认根据名称(byName)。
如果你写的是:

@Resource
private ICusPfUserService cusPfUserService;

Spring 会先查找 名为 “cusPfUserService” 的 Bean,找不到时再按类型匹配。

🏗️ 三、为什么在不同地方用得不一样
✅ 1. @Autowired 常用于普通组件(如工具类、配置类、任务类)

比如:

@Component
public class XieqiaoOrgSync {
public void startSync() { … }
}

@Autowired
private XieqiaoOrgSync xieqiaoOrgSync;

这里类名和 Bean 名是相同的,@Autowired 按类型匹配最方便、最自然。

✅ 2. @Resource 常用于 ServiceImpl 之间互相引用

比如:

@Service
public class CusPfUserServiceImpl implements ICusPfUserService {

@Resource
private PfUserService pfUserService;

}

为什么?因为很多 Service 都是通过 接口 + 实现类 的形式存在,比如:

public interface ICusPfUserService { … }
@Service
public class CusPfUserServiceImpl implements ICusPfUserService { … }

在这种情况下:

使用 @Autowired 会按类型找,可能匹配到多个实现类(如果有别的同接口实现)。

使用 @Resource 则可以精确按 字段名(即 Bean 名) 匹配,避免歧义。

场景推荐注解理由
只有一个实现类@Autowired简洁直接
存在多个同接口实现类@Resource按名称更安全
需要 required=false@Autowired@Resource 不支持
想用构造器注入@Autowired推荐写法(更易测试)
对比点@Autowired@Resource
默认匹配方式按类型按名称
是否支持 required=false✅ 是❌ 否
支持构造器注入✅ 是❌ 否
是否是 Spring 专属✅ 是❌ 是标准 JSR
推荐用途工具类 / 配置类多实现 Service / DAO
http://www.dtcms.com/a/490131.html

相关文章:

  • 网站设置cookie什么意思以个人名义做地方门户网站
  • 客户案例 | 派克新材x甄知科技,构建全场景智能IT运维体系
  • python基本数据类型、字典、 集合、条件与循环控制、函数(3)
  • 语音处理:wav头格式非44字节场景处理分析
  • git 安全证书 【git】
  • leetcode 168. Excel 表列名称 python
  • LabVIEW 高速采集系统性能优化
  • 忻州建设公司网站临汾做网站的公司
  • 书籍学习|基于SprinBoot+vue的书籍学习平台(源码+数据库+文档)
  • PNNX + TorchScript + 手动修改后处理逻辑,最终输出适配 NCNN官方 yolov8.cpp
  • 记录小程序真机bug,而模拟器无法复现
  • 【iOS取证篇】浅谈iPhone手机的失窃设备保护功能
  • Qoder 全栈Ai工具
  • 数据库—数据库设计 多表查询 事务
  • php网站开发如何赚钱新发地网站建设
  • 多合一建网站数码电子产品网站建设策划书
  • Spring Boot + Kafka 全面实战案例
  • MATLAB基于GWO-BP神经网络对某拨叉件锻造金属流动性的参数分析
  • 建网站教学视频wordpress外汇
  • Ubuntu-8卡H20服务器升级nvidia驱动+cuda版本
  • 2.6 代码注释与编码规
  • html css js网页制作成品——饮料官网html+css+js 4页网页设计(4页)附源码
  • Langchain流式自定义生成器函数
  • 基于单片机的智能收银机模拟系统设计
  • ssh连接本地虚拟机
  • PyInstaller多模块项目打包指南
  • access 网站后台汕头自助建站
  • 从图纸到三维模型:智能装配指导的突破之路
  • 「JMM+Java锁+AQS」 知识图谱
  • 【广州公共资源交易-注册安全分析报告-无验证方式导致安全隐患】