`

@Resource、@Autowired、@Qualifier的注解注入及区别

 
阅读更多

 

在Java代码中可以使用 @Resource  或者 @Autowired 注解方式来进行注入。 虽然 @Resource 和 @Autowried 都可以完成依赖注入,但是他们是有区别的。

一: @Resource

  默认是按照名称来装配注入的,只有当找不到与名称匹配的bean才会按照类型来注入。

  它有两个属性是比较重要的:

    ①. name: Spring 将 name 的属性值解析为 bean 的名称, 使用 byName 的自动注入策略

    ②. type: Spring 将 type的属性值解析为 bean 的类型,使用 byType 的自动注入策略

  : 如果既不指定 name 属性又不指定 type 属性,Spring这时通过反射机制使用 byName 自动注入策略

  @Resource 的装配顺序

    1. 如果同时指定了 name 属性和 type 属性,那么 Spring 将从容器中找唯一匹配的 bean 进行装配,找不到则抛出异常

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

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

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

二: @Autowried

  默认是按照类型进行装配注入,默认情况下,它要求依赖对象必须存在,如果允许 null 值,可以设置它 required 为false。

  如果我们想要按名称进行装配的话,可以添加一个 @Qualifier 注解解决。

@Autowried
@Qualifier("adminDAO")
private AdminDAO adminDAO;

 

  @Resource 注解是 J2EE 提供的, 而 @Autowried 是 Spring 提供的,如果想减少对 Spring 的依赖建议使用 @Resource 方法。

  @Resource 和 @Autowried 都可以加在字段的 setter 方法上。

分享到:
评论

相关推荐

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

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

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

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

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

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

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

    如果存在多个相同类型的bean,可以通过`@Qualifier`注解指定特定的bean,或者通过`required`属性设置为`false`来允许不注入任何bean。 除了基于类型匹配外,`@Autowired`还支持基于方法参数的自动装配,以及配合`@...

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

    此外,`@Resource`可以用于字段、setter方法以及构造器参数,而`@Autowired`(另一个常用的依赖注入注解)则不能用于构造器参数。 `@Autowired`和`@Resource`虽然都可以实现依赖注入,但它们的使用场景有所不同。`@...

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

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

    学习Spring笔记_Annotation(注解)_Autowired_Qualifier

    在类中使用`@Autowired`注解注入Service: ```java public class SomeClass { @Autowired private Service service; } ``` 由于存在两个实现了`Service`接口的Bean,Spring无法确定应该注入哪个。为了解决这个...

    springmvc @Resource 注解方式问题

    理解`@Resource`注解的工作机制和与`@Autowired`的区别,有助于优化Spring容器的依赖注入,避免潜在的注入错误。在选择使用哪种注解时,开发者应根据项目需求和bean的命名规则来决定。同时,结合使用`@Qualifier`和`...

    用@Resource注解完成属性装配

    在Spring框架中,`@Resource`注解是一个重要的组件,用于实现依赖注入(Dependency Injection,简称DI)。依赖注入是Spring的核心特性,它使得组件之间的耦合度降低,提高了代码的可测试性和可维护性。本篇文章将...

    @resource所需包.rar

    4. **@Qualifier注解的配合使用** 当存在多个相同类型的bean时,可以使用`@Qualifier`注解指定特定的bean名称,避免歧义。例如: ```java public class MyService { @Resource @Qualifier("specificBean") ...

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

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

    spring注解注入示例详解.pdf

    如果需要在存在多个匹配的Bean时指定使用哪一个,可以使用@Qualifier注解配合@Autowired使用。 例如: ```java @Autowired @Qualifier("userServiceImpl") public IUserService userService; ``` 上面的代码表示...

    Spring3.0注解注入详解[总结].pdf

    在Spring框架中,注解注入是一种非常重要的依赖管理机制,特别是在Spring 3.0及更高版本中得到了广泛的应用。本文将详细阐述Spring 3.0中的注解注入,包括@Autowired、@Qualifier、@Resource和@PostConstruct这四个...

    springMVC-annotation注解介绍

    3、@Resource和@Autowired ...如果我们想使用按照名称(byName)来装配,可以结合@Qualifier注解一起使用。如下: public class TestServiceImpl { @Autowired @Qualifier("userDao") private UserDao userDao; }

    spring3注解详细

    本文将详细介绍几个关键的注解,包括 @Autowired、@Qualifier、@Resource 和 @PostConstruct,以及它们在实际开发中的应用。 ## 1. @Autowired 注解 @Autowired 是 Spring 提供的一种自动装配机制,它可以根据类型...

    Spring注解注入属性

    ### Spring注解注入属性 #### 一、传统方式与注解方式对比 在Spring框架中,依赖注入(DI)是一种核心的设计模式,用于促进松耦合的系统设计,使得组件之间的依赖关系可以在运行时动态地建立,而不是在编译时硬...

    Spring 中 @Service 和 @Resource 注解的区别

    然而,当存在多个相同类型的bean时,@Autowired可能无法确定注入哪一个,这时可以结合使用@Qualifier注解来指定确切的bean。关于@Autowired和@Resource的详细区别,可以通过相关的学习资源进行深入学习。 总的来说...

    (转)Spring 3.0 注解注入详解

    在Spring 3.0中,注解注入还支持了构造器注入,通过在构造函数参数上使用`@Autowired`,Spring会在实例化bean时调用相应的构造函数并注入对应的依赖。 为了更深入地学习Spring 3.0的注解注入,你可以阅读提供的文档...

    Spring使用@Autowired注解自动装配

    在Spring框架中,`@Autowired`注解是一个关键特性,用于简化依赖注入的过程。依赖注入是一种设计模式,它允许我们解耦代码,提高模块的可测试性和可维护性。在这个主题中,我们将深入探讨`@Autowired`的工作原理、...

    Spring Boot最常用的30个注解.docx

    详细介绍了Spring Boot最常用的30个注解,包含概念、原理、示例 Spring Boot最常用的30个注解 一、 @SpringBootApplication 二、 Spring Bean 相关 1 @Controller 2 @Service 3 @Repository 4 @Component 5 @Bean 6 ...

Global site tag (gtag.js) - Google Analytics