欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > 名人名企 > Springboot中@Autowired和@Resource注解的区别和联系

Springboot中@Autowired和@Resource注解的区别和联系

2025/11/28 4:12:39 来源:https://blog.csdn.net/NiNg_1_234/article/details/145417834  浏览:    关键词:Springboot中@Autowired和@Resource注解的区别和联系

文章目录

  • Springboot中@Autowired和@Resource注解的区别和联系
    • 一、引言
    • 二、@Autowired注解
      • 1、注解来源
      • 2、工作原理
      • 3、使用示例
    • 三、@Resource注解
      • 1、注解来源
      • 2、工作原理
      • 3、使用示例
    • 四、区别和联系
      • 1、区别
      • 2、联系
    • 五、总结

Springboot中@Autowired和@Resource注解的区别和联系

在这里插入图片描述

一、引言

在Spring框架中,@Autowired@Resource 是两种常用的依赖注入注解,它们都用于自动装配Bean,简化了开发者手动创建和管理Bean的繁琐工作。然而,它们的实现机制和使用方式有所不同。理解这两者的区别和联系,对于优化Spring应用的开发过程非常重要。

二、@Autowired注解

1、注解来源

@Autowired 是Spring框架提供的注解,专门用于依赖注入。

2、工作原理

  • 默认按类型自动装配(byType)。如果存在多个相同类型的Bean,则可以通过@Qualifier指定具体的Bean名称。
  • 可以通过设置@Autowired(required=false)来实现可选依赖注入,避免找不到匹配Bean时抛出异常。

3、使用示例

java复制

@Component
public class UserService {@Autowiredprivate UserRepository userRepository;public void performAction() {userRepository.save();}
}

在上面的示例中,UserService类中的userRepository@Autowired注解自动注入。Spring会根据类型(即UserRepository)来注入对应的Bean。

三、@Resource注解

1、注解来源

@Resource 是Java标准注解(JSR-250),在Spring中也得到了支持。

2、工作原理

  • 默认按名称自动装配(byName)。如果容器中没有与字段名称匹配的Bean,则会按类型自动装配。
  • 支持设置name属性来指定注入Bean的名称。

3、使用示例

java复制

@Component
public class UserService {@Resource(name = "userRepository")private UserRepository userRepository;public void performAction() {userRepository.save();}
}

在这个示例中,UserService类中的userRepository通过@Resource注解按名称装配。如果没有找到名称为userRepository的Bean,Spring会尝试按类型来装配。

四、区别和联系

1、区别

  • 来源@Autowired是Spring框架提供的,而@Resource是Java标准注解。
  • 默认装配方式@Autowired默认按类型装配,@Resource默认按名称装配,找不到则按类型装配。
  • 支持属性@Autowired支持required属性,@Resource支持name属性。
  • 适用场景@Autowired更适用于Spring项目,@Resource更适合需要兼容Java EE标准的场景。

2、联系

  • 两者都用于依赖注入,都可以通过名称或类型来指定要注入的Bean。
  • 在Spring项目中,两者都可以使用,但@Autowired的使用更为广泛。

五、总结

@Autowired@Resource都是Spring中常用的依赖注入注解,各有优势。@Autowired默认按类型装配,灵活性高,适合大多数Spring项目;@Resource默认按名称装配,更精确,适合需要兼容Java EE标准的场景。在实际开发中,可以根据具体需求选择合适的注解。


版权声明:本博客内容为原创,转载请保留原文链接及作者信息。

参考文章

  • SpringBoot | @Autowired 和 @Resource 的区别及原理分析

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词