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

[复制链接]
发表于 2025-8-3 15:05:09 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
在 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 则在需要按名称注入或当需要明确指定注入点时利用。
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表