理解@Autowired和@Resource注解的区别

9,513次阅读
没有评论

共计 1884 个字符,预计需要花费 5 分钟才能阅读完成。

风里有诗句
2024-01-04 16:37:16
浏览数 (1149)

在 Spring 框架中,@Autowired 和 @Resource 是两个常用的注解,用于实现依赖注入。尽管它们都可以用于自动装配 Bean,但它们在某些方面存在一些区别。本文将详细解释 @Autowired 和 @Resource 注解的区别,包括使用方式、依赖查找方式和适用范围。

下载

@Autowired 注解

@Autowired 注解是 Spring 框架提供的注解之一,用于自动装配 Bean。它可以用于字段、构造函数、Setter 方法以及方法参数上。当 Spring 容器创建 Bean 实例时,会自动解析和注入相应的依赖。

@Autowired 注解的特点

  • 默认按照类型进行依赖查找和注入。
  • 如果存在多个匹配的 Bean,可以通过指定 Bean 的名称或使用 @Qualifier 注解来进行精确匹配。
  • 可以在构造函数、Setter 方法和字段上使用。

示例代码

@Component
public class MyClass {
    @Autowired
    private MyDependency myDependency;
    
    // 构造函数注入
    @Autowired
    public MyClass(MyDependency myDependency) {this.myDependency = myDependency;}
    
    // Setter 方法注入
    @Autowired
    public void setMyDependency(MyDependency myDependency) {this.myDependency = myDependency;}
    
    // 方法参数注入
    @Autowired
    public void myMethod(MyDependency myDependency) {this.myDependency = myDependency;}
}

@Resource 注解

@Resource 注解是 Java EE 提供的注解,也可以用于依赖注入。它可以在字段、Setter 方法和方法参数上使用。

@Resource 注解的特点

  • 默认按照名称进行依赖查找和注入,可以通过指定 name 属性或使用 @Qualifier 注解来进行精确匹配。
  • 可以在字段、Setter 方法和方法参数上使用。

示例代码

@Component
public class MyClass {
    @Resource
    private MyDependency myDependency;
    
    // Setter 方法注入
    @Resource
    public void setMyDependency(MyDependency myDependency) {this.myDependency = myDependency;}
    
    // 方法参数注入
    public void myMethod(@Resource MyDependency myDependency) {this.myDependency = myDependency;}
}

@Autowired 和 @Resource 的区别

  • 来源:@Autowired 是 Spring 框架提供的注解,而 @Resource 是 Java EE 提供的注解。
  • 依赖查找方式:@Autowired 默认按照类型进行依赖查找和注入,可以通过指定 Bean 名称或使用 @Qualifier 注解来精确匹配。而 @Resource 默认按照名称进行依赖查找和注入,也可以通过指定 name 属性或使用 @Qualifier 注解来精确匹配。
  • 兼容性:@Autowired 是 Spring 框架的特定注解,只能在 Spring 应用中使用。而 @Resource 是 Java EE 提供的注解,可以在任何 Java EE 兼容的应用中使用。
  • 注入方式:@Autowired 可以用于字段、构造函数、Setter 方法和方法参数上。而 @Resource 可以用于字段、Setter 方法和方法参数上。

总结

@Autowired 和 @Resource 注解在依赖注入方面有一些区别。@Autowired 是 Spring 框架提供的注解,按照类型进行依赖查找和注入,默认适用于 Spring 应用;而 @Resource 是 Java EE 提供的注解,按照名称进行依赖查找和注入,适用于任何 Java EE 兼容的应用。根据具体的应用场景和需求,选择合适的注解来实现依赖注入。

1698630578111788

如果你对编程知识和相关职业感兴趣,欢迎访问编程狮官网(https://www.w3cschool.cn/)。在编程狮,我们提供广泛的技术教程、文章和资源,帮助你在技术领域不断成长。无论你是刚刚起步还是已经拥有多年经验,我们都有适合你的内容,助你取得成功。

原文地址: 理解 @Autowired 和 @Resource 注解的区别

    正文完
     0
    Yojack
    版权声明:本篇文章由 Yojack 于2024-09-19发表,共计1884字。
    转载说明:
    1 本网站名称:优杰开发笔记
    2 本站永久网址:https://yojack.cn
    3 本网站的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,请联系站长进行删除处理。
    4 本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
    5 本站所有内容均可转载及分享, 但请注明出处
    6 我们始终尊重原创作者的版权,所有文章在发布时,均尽可能注明出处与作者。
    7 站长邮箱:laylwenl@gmail.com
    评论(没有评论)