`

Spring注解自动装配

 
阅读更多

一:spring提供了4种自动装配策略

1:byName: 把与Bean的属性具有相同名字(或者ID)的其他Bean自动装配到 Bean的对应属性中。

2:byType:把与Bean的属性具有相同类型的其他Bean自动装载到Bean的对应属性中。

3:constructor:把与Bean的构造器入参具有相同类型的其他Bean自动装配到Bean构造器的对应参数中。

4:autodelect:先使用constructor,如果没有找到载使用byName

 

二:使用注解自动装配

1:Spring自带的@Autowired注解,默认按byType类型注入,可以用在setter方法,一般方法,构造方法,成员属性

Autowired标注可以放在成员变量上,也可以放在成员变量的set方法上。前者,Spring会直接将UserDao类型的唯一一个bean赋值给userDao这个成员变量;后者,Spring会调用setUserDao方法来将UserDao类型的唯一一个bean装配到userDao这个属性。

Autowired标注具有强契约特征,其所标注的属性或参数必须是可装配的,可以通过@autowired(required=false)不一定需要注入Bean。可以配合使用@Qualifier来明确区分出那一个Bean才是真正需要的。因为@Qualifier意味着把@Autowired的byType类型注入,转为byName

 

2:   @Inject注解:标准的自动装配,默认按byName

与@AutoWired区别:使用@Inject注解所标注的依赖关系必须存在。

 

3:@Resource注解,默认按byName类型注入

 @Resource有两个属性是比较重要的,分是name和type,Spring将@Resource注解的name属性解析为bean的名字,而type属性则解析为bean的类型。所以如果使用name属性,则使用byName的自动注入策略,而使用type属性时则使用byType自动注入策略。如果既不指定name也不指定type属性,这时将通过反射机制使用byName自动注入策略。

  @Resource装配顺序
  1. 如果同时指定了name和type,则从Spring上下文中找到唯一匹配的bean进行装配,找不到则抛出异常
  2. 如果指定了name,则从上下文中查找名称(id)匹配的bean进行装配,找不到则抛出异常
  3. 如果指定了type,则从上下文中找到类型匹配的唯一bean进行装配,找不到或者找到多个,都会抛出异常
  4. 如果既没有指定name,又没有指定type,则自动按照byName方式进行装配;如果没有匹配,则回退为一个原始类型进行匹配,如果匹配则自动装配

 

       5.@Resource应用在字段上,则注入规则是:

  a.先使用字段名字匹配bean,查找到bean则注入,如果类型不匹配则此时有异常,注入失败。

  b.如果字段名字没有匹配到Bean则spring会尝试采用字段类型匹配,如果找打bean则注入,如果字段类型是       接口则有可能会匹配到多个类型,则会抛出匹配到多个bean的异常, 注入失败。

       6.@Resource应用在setter上(应用到属性),则注入规则是:

  a.先使用属性名字匹配bean,查找到bean则注入,如果类型不匹配则此时有异常,注入失败。

  b.如果属性名字没有匹配到Bean则spring会尝试采用属性参数类型匹配,如果找打bean则注入,如果属性参数类型是接口则有可能会匹配到多个类型,则会抛出匹配到多个bean的异常.注入失败。 

  注意是属性的参数类型,并不是属性的类型,注意区别

  3.小结

  a.名称------>b.类型或参数类型(属性时). 

 

 

 

分享到:
评论

相关推荐

    Spring实现自动装配

    4. **基于注解的自动装配(Annotation-Based Auto-Wiring)**:使用`@Autowired`注解在字段、构造函数、方法或参数级别来指示Spring进行自动装配。默认也是按类型匹配,但可以通过`@Qualifier`注解指定特定的bean。...

    Spring自动装配解析

    Spring 2.5引入了基于注解的配置,可以使用`@Autowired`注解在字段、setter方法或构造函数上,声明需要自动装配的依赖。此外,还可以结合`@Qualifier`注解来指定具体的bean实例,避免类型匹配的冲突。 5. 自动装配...

    spring自动装配项目struts2

    Spring提供了多种自动装配方式,如byType、byName等,可以根据配置或注解来实现。在项目中,通过配置Spring的bean定义,或者使用@Autowired注解,我们可以让Spring自动为我们的bean注入所需的依赖,简化了代码并增强...

    Spring 自动装配及其注解

    本文将深入探讨Spring自动装配的概念、类型以及常用的注解。 一、Spring自动装配的基本概念 自动装配是Spring IoC(控制反转)的一种实现方式,IoC意味着容器负责创建对象并管理它们的生命周期,包括对象之间的依赖...

    Java注解机制之Spring自动装配实现原理详解

    Java注解机制之Spring自动装配...Java注解机制之Spring自动装配实现原理详解是指Spring框架中使用Java注解机制来实现自动装配功能的机制,该机制可以根据注解信息来自动将Bean对象关联起来,从而实现了自动装配功能。

    Spring中的自动装配有哪些限制?.docx

    Spring会优先使用带有@Autowired注解的构造函数或setter方法,这意味着如果这些方法存在,自动装配的配置将不起作用。因此,如果你希望使用自动装配,应避免在bean定义中同时使用这两种注入方式。 2. **基本数据...

    第五章 Spring4 自动装配、方法注入

    在本章中,我们将深入探讨Spring框架的核心特性之一——自动装配和方法注入。Spring作为一款广泛应用的Java企业级开发框架,极大地简化了依赖管理,提高了代码的可测试性和可维护性。自动装配和方法注入是Spring实现...

    4Spring自动装配——annotation resource方式

    `@Autowired`是Spring中最常见的注解,用于自动装配匹配类型的Bean。然而,`@Resource`注解则提供了另一种自动装配方式,尤其是在处理Java EE规范中的资源时,如JNDI查找。 ### 二、`@Resource`注解 `@Resource`...

    spring注解 -----最简单的注解与自动装配例子

    通过分析这些代码,我们可以更好地理解Spring注解的使用和自动装配的工作原理。 总的来说,Spring注解极大地简化了Spring应用的配置,使得开发者可以更加专注于业务逻辑,而不是繁琐的XML配置。通过合理使用@...

    模拟Spring的IoC容器实现注解自动装配

    而注解自动装配(Autowired)是Spring IoC容器的一种高级特性,它允许我们通过注解来声明对象之间的依赖,无需手动编写XML配置。现在,我们将深入探讨如何模拟Spring的IoC容器实现注解自动装配。 首先,我们需要...

    AOP中的注解自动装配通知

    在Java中,Spring框架提供了对AOP的强大支持,包括使用注解进行自动装配通知的功能。 标题"AOP中的注解自动装配通知"主要涉及两个关键概念:AOP和注解自动装配。首先,让我们详细了解一下这两个概念: **面向切面...

    使用注解自动装配需要组件扫描.zip

    在Spring框架中,注解自动装配(Annotation-based Autowiring)是一种简化依赖注入(Dependency Injection,简称DI)的方式,它允许开发者用注解来声明类的依赖,而无需使用XML配置文件。本教程将深入讲解如何使用...

    Spring demo 自动检测注解

    首先,`@Autowired`是Spring框架提供的一种依赖注入(DI,Dependency Injection)方式,用于自动装配bean的依赖。当我们在类的属性或方法上使用这个注解时,Spring会自动寻找匹配类型的bean并将其注入。这种方式比传统...

    spring学习之四“自动装配”

    1. **@Autowired**注解:这是Spring提供的用于标记需要自动装配的字段、构造器、setter方法的注解。例如: ```java public class UserService { @Autowired private UserRepository userRepository; } ``` 2. **...

    Spring注解实现自动装配过程解析

    Spring 注解实现自动装配过程解析 本文主要介绍了 Spring 框架中使用注解实现自动装配的过程和原理,通过示例代码对各种注解的使用进行了详细的介绍,旨在帮助读者更好地理解和应用 Spring 的自动装配机制。 首先...

    spring中的自动装配实例byName、byType

    在Spring框架中,自动装配(Auto-Wiring)是一种简化依赖注入的方式,它允许Spring容器自动为bean找到并设置其依赖。本篇文章将深入探讨两种主要的自动装配方式:byName和byType,以及它们在实际应用中的实例。 **1...

    Spring使用@Autowired注解自动装配

    - **字段注入**:在需要注入的字段上方添加`@Autowired`注解,Spring会在初始化时自动填充该字段。 ```java @Autowired private MyService myService; ``` - **构造函数注入**:在构造函数上使用`@Autowired`,...

    深度剖析Spring Boot自动装配机制实现原理(csdn)————程序.pdf

    总的来说,Spring Boot的自动装配机制基于一系列注解和接口,如`@EnableAutoConfiguration`、`AutoConfigurationImportSelector`、`@Conditional`等,实现了根据项目依赖和配置动态地加载和配置bean,极大地提升了...

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

    本篇将重点讲解Spring的@Autowired自动装配机制,包括XML配置版和注解版,并深入到源码层面进行解析。 @Autowired是Spring框架中的一个核心注解,用于实现自动装配bean的需求。当我们想要在类中注入某个依赖时,...

Global site tag (gtag.js) - Google Analytics