`
绿茶_白开水
  • 浏览: 19165 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

@Autowired和@Resource的区别

阅读更多

相同点:

@Autowired和@Resource作用基本相同,都是用于自动装配bean对象。都可以写在字段上,或写在setter方法上。


区别点:


1.出处不同

@Autowired(Spring注解,org.springframework.beans.factory.annotation.Autowired)

@Resource(JAVA注解,javax.annotation.Resource)

后者是JAVA注解,适用范围广,依赖小


2.自动装配策略不同


@Autowired 只能按类型匹配,如果要允许null  值,可以设置它的required属性为false, 如果使用按照名称装配,可使用@Qualifier注解;
@Resource 默认优先名称匹配 具体装配策略如下:
    a. 如果同时指定了name和type,则从Web容器上下文中找到唯一匹配的bean进行装配,找不到则抛出异常 
 b. 如果指定了name,则从上下文中查找名称匹配的bean进行装配,找不到则抛出异常 
 c. 如果指定了type,则从上下文中找到类型匹配的唯一bean进行装配,找不到或者找到多个,都会抛出异常 
 d. 如果既没有指定name,又没有指定type,则将通过反射机制(
当注解标注在字段上,即默认取字段的名称作为bean名称寻找依赖对象,当注解标注在属性的setter方法上,即默认取属性名作为bean名称寻找依赖对象。) 使用 byName 自动注入策略进行装配;如果没有匹配,则 会按照类型装配( 对于字段注释,默认值为字段的类型。对于方法注释,默认值为 JavaBean 属性的类型。),都 找不到则抛出异常

 3.其他区别
    @Autowired 可以允许 null。
    @Resource 可以对类注解

如何选择:个人观点,仅供参考
      前提@Autowired必须有Spring容器,剩下的主要看想byType还是b yName匹配策略了。如果偏向于接口编程,则肯定用@Autowired比较方便,书写简单。如果可能换Web容器,那可能优先@Resource比较好。 其他情况都差不多。

分享到:
评论

相关推荐

    (转)Spring中@Autowired注解和@Resource注解的区别

    在阅读《Spring中Autowired和Resource的区别.docx》文档时,可以深入探讨这两个注解的内部实现原理,以及在实际项目中的最佳实践。通过源码分析,我们可以了解到Spring如何解析这些注解并执行依赖注入的过程,这有助...

    Spring In Action 使用@Autowired 和@ Resource 自动装配Bean

    在Spring框架中,`@Autowired`和`@Resource`都是用于自动装配Bean的重要注解,它们简化了依赖注入的过程,使得代码更加简洁、易于维护。本文将深入探讨这两个注解的使用、区别以及如何在实际开发中应用它们。 首先...

    详解Spring依赖注入:@Autowired,@Resource和@Inject区别与实现原理

    Spring 依赖注入:@Autowired,@Resource 和@Inject 区别与实现原理 Spring 依赖注入是指在应用程序中将对象之间的依赖关系自动装配的过程。Spring 框架提供了多种依赖注入方式,包括 @Autowired、@Resource 和@...

    【Java面试】@Resource 和 @Autowired 的区别.doc

    @Resource 和 @Autowired 的区别 在 Spring 框架中,@Resource 和 @Autowired 是两种常用的依赖注入方式,但是它们之间存在着一些关键的区别。 首先,让我们来了解 @Autowired 注解。@Autowired 是 Spring 框架...

    SSH笔记-通过@Autowired配置注入关系

    8. **`@Autowired`的替代品**:Spring还提供了一些其他的注解,如`@Resource`(基于名称的注入)和`@Value`(用于注入基本类型或属性值)作为`@Autowired`的补充。 结合前一篇文章中的注解笔记,我们可以推断出上一...

    Spring注解@Resource和@Autowired.doc

    Spring 注解@Resource 和@Autowired Spring 框架中提供了两个重要的注解,分别是@Resource 和@Autowired,它们都是用于 bean 的自动装配的。了解这两个注解的区别和使用场景是非常重要的。 首先,@Autowired 是 ...

    Spring框架中 @Autowired 和 @Resource 注解的区别

    在Spring框架中,注解是实现依赖注入的重要方式,其中包括`@Autowired`和`@Resource`两个常用的注解。它们虽然都可以用来注入依赖,但在实际使用中存在一些区别。 首先,`@Autowired`注解是Spring框架特有的,主要...

    Spring使用@Autowired注解自动装配

    在Spring框架中,`@Autowired`注解...正确理解和使用`@Autowired`,可以帮助开发者构建更加灵活和健壮的应用程序。通过合理的bean设计和适当的注解使用,我们可以充分利用Spring的强大功能,同时保持代码的简洁和高效。

    详解Spring注解--@Autowired、@Resource和@Service

    Spring注解详解 -- @Autowired、@Resource和@Service Spring框架中有三个非常重要的注解,即@Autowired、@Resource和@Service。这三个注解都是Spring框架中最常用的注解,它们都是用于解决Spring框架中的依赖注入...

    1.@Resource是按名称进行注入的,属于java自带的。@Autowired是按类型进行注入的,属于Spring。.pdf

    Spring框架是Java领域中实现DI的典型代表,提供了多种注解来支持这一机制,其中两个常用的注解是`@Resource`和`@Autowired`。虽然它们都可以用来实现依赖注入,但它们的用法和原理有所不同。 首先,`@Resource`注解...

    详解SpringBoot 多线程处理任务 无法@Autowired注入bean问题解决

    SpringBoot 多线程处理任务中无法@Autowired注入bean问题解决 在 SpringBoot 应用程序中,多线程处理任务是一个常见的场景,但是,在多线程处理任务中无法使用 @Autowired 注入 bean,这是一个常见的问题。今天,...

    学习Spring笔记_Annotation(注解)_Autowired_Qualifier

    除了`@Autowired`,Spring框架还提供了其他的依赖注入注解,如`@Resource`(主要用于JSR-250规范,基于名称的注入)和`@Inject`(JSR-330规范,基于类型和名称的注入)。这些注解在不同的场景下有不同的优势,开发者...

    spring框架的@Resource和@Component 程序和文档

    `@Autowired`和`@Resource`虽然都可以实现依赖注入,但它们的使用场景有所不同。`@Autowired`更侧重于类型匹配,适用于大多数情况,而`@Resource`则更适用于你知道确切的Bean名称,并希望基于名称注入依赖的情况。 ...

    你所不知道的Spring的@Autowired实现细节分析

    8. **@Autowired与@Resource的区别** `@Autowired`主要基于类型匹配,而`@Resource`则优先基于名称匹配。`@Resource`是JSR-250规范的一部分,它的行为更接近于传统的J2EE资源注入。`@Autowired`提供了更灵活的依赖...

    Spring注解@Resource和@Autowired区别对比详解

    主要介绍了Spring注解@Resource和@Autowired区别对比详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

    Autowired报错原因分析和4种解决方案.docx

    ### @Autowired 报错原因分析及四种解决方案 #### 一、引言 在日常的Java开发工作中,尤其是使用Spring框架时,我们经常会遇到@Autowired注解出现的编译警告或者错误。尽管这些错误往往不会影响程序的实际运行,但...

    springMVC-annotation注解介绍

    3、@Resource和@Autowired @Resource和@Autowired都是做bean的注入时使用,其实@Resource并不是Spring的注解,它的包是javax.annotation.Resource,需要导入,但是Spring支持该注解的注入。 1、共同点 两者都可以写...

    1+X考试真题-Java-中级-2021-11(1).docx

    本节中我们讨论了 MyBatis 和 Spring 中的一些重要知识点,包括 MyBatis 的特点、注解风格的 MyBatis 中获取数据库厂商自动生成的主键值、Spring 中的 @Autowired 和 @Resource 注解等。通过对这些知识点的掌握,...

    Spring的Autowired自动装配(XML版本+Annotation版本+源码+解析)

    - @Autowired与@Resource:虽然两者都可以用来自动装配,但@Autowired默认按类型匹配,而@Resource默认按名字匹配。 总结,Spring的@Autowired自动装配机制极大地简化了bean之间的依赖管理,提高了代码的可维护性。...

Global site tag (gtag.js) - Google Analytics