`
javis163
  • 浏览: 44954 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

@Resource、@Autowired和default-autowire区别联系

    博客分类:
  • java
阅读更多

 

一、@Resource与@Autowired的区别?

 

1.@Autowired按byType自动注入。具体工作原理如下:

1、根据类型(byType)找到所有满足条件的bean

2、判断bean长度,如果没有,则根据@Autowired中的required属性进行判断是否抛出异常(默认为true)

3、如果多于一个,则尝试寻找最优的那一个,如果最优的未找到,则抛出异常 

4、如果只有一个,则直接使用此bean

 

2.@Resource默认按byName自动注入。具体工作原理如下:

1、获取名称,判断容器中是否存在此name(id)的bean

2、如果存在,则直接使用此name进行查询

3、@Resource如果没有指定name属性,并且按照默认的名称仍然找不到依赖对象时, @Resource注解会回退到按类型装配。但一旦指定了name属性,就只能按名称装配了。

4、退化到默认的autowire查找方式

但是@Resource有两个属性是比较重要的,分是name和type;

如果使用name属性,则使用byName的自动注入策略,而使用type属性时则使用byType自动注入策略;

 

@Autowired是spring自己定义的注解,@Resource是J2EE的,由JSR-250规范定义。

 

二、@Autowired、@Resourcedefault-autowire="byType"、default-autowire="byName"有什么关系呢?

 

确切的说,没有什么关系。

Annotation注入和autowire是没有关系的。

Autowire的功能是在application context里实现的,

而annotation注入的功能是通过BeanPostProcessor来实现的。无论你是否autowire,只要你写了@Resourc​e或@Autowired注解,对象就会被注入。

 

 

分享到:
评论

相关推荐

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

    在Spring框架中,`@Autowired`和`@Resource`注解是两个常见的依赖注入(DI, Dependency Injection)工具,它们都是用来解决组件之间的耦合问题,使得代码更加灵活和可测试。然而,这两个注解在具体使用时有一些关键性...

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

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

    Spring注解@Resource和@Autowired.doc

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

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

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

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

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

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

    理解这两个注解的使用和区别是掌握Spring框架核心概念的关键。 首先,`@Component`是Spring框架中的一个元注解,它用于标记一个类为Spring管理的Bean。当你在类定义上添加`@Component`时,Spring会自动扫描到这个类...

    springMVC技术概述

    springMVC相关技术配置使用注解的HandlerMapping和HandlerAdapter使用<mvc:annotation-driver> 不过springBoot已经省略了这些配置 配置使用注解的Handler和Service等等使用<context:component-scan> 不过springBoot...

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

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

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

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

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

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

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

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

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

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

    spring-autowire-demo.zip

    本示例"spring-autowire-demo.zip"是基于Spring 5.3.6版本,通过多个示例展示了自动装配的不同方式:default、byName、byType和constructor,帮助我们更深入理解这个功能。 首先,让我们了解什么是自动装配。自动...

    springmvc @Resource 注解方式问题

    本文将深入探讨`@Resource`注解的用法、原理以及与`@Autowired`的区别,帮助开发者更好地理解和应用这一特性。 ### `@Resource`注解概述 `@Resource`是JSR-250规范的一部分,它主要用来标记JavaBean中的属性,由...

    spring-autowire.zip

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

    通过@Autowired注解注入bean的顺序,以及@bean注入.rar

    `@Autowired`和`@Bean`是两个关键注解,它们在实现DI时起着重要作用。让我们深入探讨这两个注解的工作原理,以及它们在注入bean时的顺序。 `@Autowired`注解由Spring提供,用于自动装配bean的依赖。当我们在字段、...

    12 @Autowired是如何工作的?-Spring注解源码深度揭秘-慕课专栏1

    在Spring框架中,`@Autowired`注解是一个关键的依赖注入(DI)工具,它极大地简化了组件之间的关联。本文将深入探讨`@Autowired`的工作原理以及其在Spring中的实现方式。 首先,`@Autowired`的基本作用是自动装配Bean...

    编码剖析@Resource注解的实现原理

    2. **注解处理**:Spring容器中的`AutowiredAnnotationBeanPostProcessor`和`CommonAnnotationBeanPostProcessor`两个后处理器负责处理`@Autowired`和`@Resource`。`CommonAnnotationBeanPostProcessor`尤其关注`@...

    用@Resource注解完成属性装配

    如果同时存在`@Autowired`和`@Resource`,Spring会优先考虑`@Resource`,因为它提供了更明确的装配依据(bean的名字)。 ### 配置和选择 在某些复杂场景下,可能有多个同类型的bean,这时可以使用`@Qualifier`注解...

    @resource所需包.rar

    3. **与@Autowired的区别** - **@Autowired**注解是Spring提供的,主要用于基于类型的依赖注入。它会根据目标类型在容器中寻找匹配的bean,如果没有指定名称,会注入类型最匹配的bean。 - **@Resource**则更注重于...

Global site tag (gtag.js) - Google Analytics