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

对于依赖注解,@Autowired 和 @Resource 有什么不同?

在 Spring 框架中,@Resource 和 @Autowired 都用于依赖注入(Dependency Injection,DI),但它们之间存在一些区别:

@Autowired

  • @Autowired 是一个更通用的注解,可以被用于字段、构造器、方法等。

  • 它默认按类型(by-type)进行自动装配(autowiring),也可以通过 @Qualifier 注解指定具体的 bean。

  • @Autowired 可以被用于构造器参数,实现构造器注入。

  • 如果需要注入的 bean 不存在,@Autowired 会抛出一个异常。

  • @Autowired 可以被用于数组、集合或 Map 类型的依赖注入。

@Resource

  • @Resource 注解主要用于字段注入,也可以用于方法,但不能用于构造器参数。

  • 它默认按名称(by-name)进行自动装配,但可以通过指定 name 属性来改变。

  • @Resource 注解没有提供按类型自动装配的选项。

  • 如果需要注入的 bean 不存在,@Resource 不会抛出异常,而是会忽略该注入点。

  • @Resource 没有 @Qualifier 这样的注解来指定具体的 bean。

共同点

  • 两者都可以实现依赖注入,减少手动创建对象的需要。

  • 两者都支持通过 required 属性来指定注入是否是必需的。

在实际使用中,@Autowired 由于其灵活性和强大的自动装配能力,通常是首选的依赖注入方式。而 @Resource 则在需要按名称注入或当需要明确指定注入点时使用。

http://www.sczhlp.com/news/4592/

相关文章:

  • 第三周假期进度报告(7.27 - 8.2)
  • MySQL 24 MySQL是怎么保证主备一致的?
  • centos mongodb 第十七节课 常用的操作符
  • 题解-CSPS模拟赛8 T2
  • 汽车助力转向的的助力特性曲线三维图
  • 国内用户如何用手机进行YouTube直播? - 教程
  • Lab8 Locks
  • Java练习Day1
  • 一期集训总结
  • Diffusion (DDPM、DDIM) 原理 - rzy
  • php实现一个简单的MySQL分页
  • 2.6 基本运算符
  • 2025.8.2模考
  • Spring Boot中的分布式缓存方案
  • 跨行星共识(IPC)实现区块链突破性扩展
  • 6.5 编写高速缓存友好的代码
  • 2.5 格式化输出
  • Angular - 现代Web开发者的平台
  • 隐私政策
  • 6.4.2 直接映射高速缓存
  • Git在Windows下安装配置
  • HCL AppScan Standard 10.9.0 新增功能简介
  • IMX6ULL嵌入式Linux驱动学习笔记(六)
  • 28
  • git-commit-amend踩坑
  • Git撤销修改
  • Git学习(二)
  • Conda导入环境时显示ResolvePackageNotFound错误
  • C语言函数指针
  • P8647 [蓝桥杯 2017 省 AB] 分巧克力——二分