`
y806839048
  • 浏览: 1107707 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

@Resource和@Autowire的区别

阅读更多

@Resource和@Autowired

@Resource和@Autowired都可以用来装配bean,都可以用于字段或setter方法。

@Autowired默认按类型装配,默认情况下必须要求依赖对象必须存在,如果要允许null值,可以设置它的required属性为false。

@Resource默认按名称装配,当找不到与名称匹配的bean时才按照类型进行装配。名称可以通过name属性指定,如果没有指定name属性,当注解写在字段上时,默认取字段名,当注解写在setter方法上时,默认取属性名进行装配。

注意:如果name属性一旦指定,就只会按照名称进行装配。

 

@Autowire(名类)和@Qualifier(实例名)配合使用效果和@Resource一样:

 

@Autowired(required = false) @Qualifier("example")

private Example example;

 

@Resource(name = "example")

private Example example;

1

2

3

4

5

@Resource装配顺序

1. 如果同时指定name和type,则从容器中查找唯一匹配的bean装配,找不到则抛出异常

2. 如果指定name属性,则从容器中查找名称匹配的bean装配,找不到则抛出异常

3. 如果指定type属性,则从容器中查找类型唯一匹配的bean装配,找不到或者找到多个抛出异常

4. 如果都不指定,则自动按照byName方式装配,如果没有匹配,则回退一个原始类型进行匹配,如果匹配则自动装配

 

简要对比表格

注解对比@Resource@Autowire

注解来源JDK               Spring

装配方式优先按名称优先按类型

属性   name、typerequired

 

分享到:
评论

相关推荐

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

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

    20 面试官,请不要再问我@Resource和@Autowire注解的区别了慕课专栏(1)1

    在面试中,理解`@Resource`和`@Autowired`的区别,以及它们的实现原理,也能展示出你对Spring框架的深入理解。 综上所述,`@Resource`注解在Spring中主要通过`CommonAnnotationBeanPostProcessor`进行处理,用于按...

    autowire自动导入句柄

    在Spring框架中,`autowire`是一种...合理使用`@Autowired`、`@Qualifier`和`@Resource`注解,可以灵活地控制bean的自动装配。然而,过度依赖自动装配可能带来问题,因此在设计系统时应平衡自动装配和手动配置的使用。

    spring-autowire.zip

    当在某个字段或方法上添加了@Autowired,Spring容器会自动寻找合适的bean进行注入,而无需手动使用`@Resource`或`@Inject`来指定bean的名称。 在IDEA 2020中创建Spring项目并引入Spring Web依赖,我们可以创建几个...

    Spring自动装配的方式

    Spring自动装配的方式和举例、以及@Qualifier、@Autowire、@Resource的使用。

    自动装配 AutoWire

    虽然@Autowired和@Resource都可以实现依赖注入,但它们有一些区别: - **@Autowired** 默认按类型匹配,可以与JSR-250规范结合使用,支持注解的属性(如required,默认为true)。 - **@Resource** 按名称匹配,它是...

    3Spring使用annotation方式autowire

    本篇将详细探讨"3Spring使用annotation方式autowire"这一主题,包括注解驱动的自动装配(Autowiring)以及相关的源码分析。 ### 一、注解驱动的自动装配 自动装配是Spring框架的一个核心特性,它允许框架自动管理...

    storm-spring-autowire:使storm支持spring的注入功能

    storm-spring-autowire 使storm支持spring的注入功能 由于storm的生命周期如下 1.在提交了一个topology之后(是在nimbus所在的机器么?), 创建spout/bolt实例(spout/bolt在storm中统称为component)并进行序列化. 2.将...

    spring学习笔记

    如果希望Spring自动装配Bean,可以使用`autowire`属性,如`byName`、`byType`、`constructor`和`autodetect`,或者结合注解使用`@Autowired`和`@Resource`。`@Autowired`默认按照类型匹配,而`@Resource`则优先按照...

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

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

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

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

    如何完成spring的最小化XML配置

    然而,随着框架的发展,为了简化配置,Spring引入了最小化XML配置的概念,以及注解装配的方式,使得配置更加简洁和高效。本文将深入探讨如何实现Spring的最小化XML配置。 一、自动装配 1. 四种类型的自动装配 - ...

    spring ioc使用教程

    `@Autowired`和`@Resource`都是自动注入,但`@Autowired`默认按类型匹配,`@Resource`按名称匹配。 16. **Spring-ioc总结**: Spring的IOC/DI机制使得组件之间的依赖关系不再硬编码,提高了代码的灵活性和可扩展...

    tedu二阶段Spring全教程

    - **@Resource注入**:通过`@Resource`注解实现依赖注入。 - **Spring全注解开发**:通过注解完成整个项目的开发工作,避免了大量的XML配置文件编写。 以上就是对“tedu二阶段Spring全教程”的主要内容进行了详细的...

    SpringBoot.docx

    - **@Resource**:与 `@Autowire` 类似,但默认按名称注入,找不到时按类型注入。 - **@Bean**:标记方法为 Bean 生产者,返回的对象将被添加到 Spring 容器中。 以上是 SpringBoot 学习的一些基础知识点,涵盖项目...

    Spring2.5 自动扫描classpath

    9. **Spring_demo_09_Resource_Component** - 资源组件(@Resource)注解用于注入资源,它可以自动识别bean的名称,并且支持JSR-250规范。 10. **Spring_demo_06_aop_xml** - 使用XML配置进行AOP,这是在注解方式...

    strut2和spring整合

    - 虽然这里没有提到,但整合后,Struts2 也可以利用 Spring 的注解(如 `@Autowired`, `@Qualifier`, `@Resource` 等)来进一步简化配置和实现依赖注入。 通过以上步骤,Struts2 框架与 Spring 框架可以无缝集成,...

    马士兵Spring,XML部分整理

    7. **资源注入与事务管理**:`@Resource`注解可以用于字段或setter方法上,指定注入的Bean。事务管理是Spring处理数据库操作的关键,`@Transactional`注解用于标记需要事务控制的方法。事务的传播行为有多种,如`...

Global site tag (gtag.js) - Google Analytics