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

Spring注解的深层含义

@Autowired 和 @Resource 区别

核心区别体现在注解来源、依赖查找顺序和框架依赖性三方面‌。

@Autowired 是 Spring 框架的专有注解,默认按类型优先进行依赖查找;

@Resource 是 Java 标准注解(JSR-250),默认按名称优先查找,且在非 Spring 框架中也可使用

核心差异

  • 注解来源‌。

    • @Autowired:Spring 框架定义的注解,与 Spring 强绑定。‌‌‌‌1
    • @Resource:Java 标准注解(JSR-250 规范),与框架无关,适用于支持该规范的所有容器。‌‌‌‌
  • 依赖查找顺序‌。

    • @Autowired:‌先按类型(byType)查找‌,若存在多个同类型 Bean,再按名称(byName)匹配。‌‌‌‌
    • @Resource:‌先按名称(byName)查找‌,若未找到,再按类型(byType)匹配。‌‌1‌‌2
  • 框架依赖性‌。

    • @Autowired:依赖 Spring IoC 容器,若切换其他 IoC 框架则无法使用。‌‌
    • @Resource:与框架解耦,可在任何支持 JSR-250 的环境中运行。‌‌‌‌
    • 功能支持与使用场景

 

  1. 方法注入支持‌。

    • @Autowired:支持构造函数、Setter 方法、属性字段注入。‌‌‌‌
    • @Resource:仅支持 Setter 方法、属性字段注入(不支持构造函数注入)。‌‌3‌
  2. 空值容忍度‌。

    • @Autowired:默认要求依赖必须存在,可通过 required=false 允许空值。‌‌‌‌
    • @Resource:无类似参数,依赖不存在时直接报错。‌‌
  3. IDE 提示差异‌。
    使用 @Autowired 时,IDEA 可能提示 Field injection is not recommended 警告,因其与 Spring 强绑定;@Resource 无此提示。‌‌‌‌

实践建议

场景推荐注解理由
Spring 单一类型注入均可两者在单实现类场景下行为一致
多实现类需按名称注入@Resource直接通过 name 属性指定 Bean 名称更直观‌‌2
跨框架兼容性要求@Resource避免与 Spring 强绑定

http://www.xdnf.cn/news/1026955.html

相关文章:

  • 人工智能 倒底是 智能 还是 智障?
  • OmoFun动漫官网,动漫共和国最新入口|网页版
  • java集合篇(七) ---- ArrayList 类
  • BeckHoff_FB --> F_SEQ_X3_TrigJob 函数
  • TCP客户端进程分割输入输出
  • 【Qt】工具介绍和信号与槽机制
  • SpringCloud2020-alibaba
  • DDD各种架构详细介绍
  • CLONE——面向长时任务的闭环全身遥操:其MoE架构可实现“蹲着走”,且通过LiDAR里程计和VR跟踪技术解决位置偏差问题
  • 【61 Pandas+Pyecharts | 基于Apriori算法及帕累托算法的超市销售数据分析可视化】
  • 力扣-279.完全平方数
  • 三维重建 —— 3. 单视几何
  • 国产用例管理工具评测:Gitee Test、禅道、蓝凌测试、TestOps 哪家更懂研发协同?
  • 全流程TOUGH系列软件实践技术应用
  • electron-builder打包配置(应用名、安装包、图标、快捷方式、自定义文件关联启动等)
  • Matlab的GUI编程之一
  • 【Android】EventBus详解
  • 基于Redis实现分布式锁
  • 安科瑞亮相2025 SNEC国际太阳能光伏与智慧能源展
  • 7N65-ASEMI智能照明领域专用7N65
  • onxxrunrime问题集锦
  • 黑色金属生产车间:DeviceNet到Modbus RTU网关的“无声桥梁”
  • 【DNS】在 Windows 下修改 `hosts` 文件
  • java哨兵底层原理
  • 社区养老模式:现状、困境与破局之道
  • PH热榜 | 2025-06-13
  • Vim、Nano 与 Emacs 的深度对比及嵌入式开发推荐
  • TIA Portal V20HMI仿真时数值无法写入虚拟plc解决教程
  • SIEMENS 6SL3320-1TG35-8AA3逆变装置
  • SpringCloud-sentinel集成到nacos