@Autowired的工作原理是什么?在启动spring IoC时,容器自动装载了一个AutowiredAnnotationBeanPostProcessor后置处理器,当容器扫描到@Autowired、@Resource或@Inject时,就会在IoC容器自动查找需要的bean,并装配给该对象的属性。

@Autowired:属于Spring 的org.springframework.beans.factory.annotation包下,可用于为类的属性、构造器、方法进行注值。

@Resource:不属于Spring的注解,而是来自于JSR-250位于java.annotation包下,使用该annotation为目标bean指定协作者bean。

@Autowired注解自动装配具有兼容类型的单个bean属性,如指定的xxxService等。

-构造器,普通字段(即使是非public),一切只有参数的方法都可以应用@Autowired。

-默认情况下,当IOC容器里存在多个类型兼容的bean时,通过类型的自动装配将无法工作。此时可以在@Qualifiter注解里提供bean的名称,Spring允许对方法的入参标注 @Qualifiter以指定注入bean的名称。

-@Autowired注解也可以应用在数组类型的属性上,此时Spring将会把所有匹配的bean进行自动匹配。

-@Autowired注解也可以应用在集合属性上,此时Spring读取该集合的类型信息,然后自动装配所有与之兼容的bean。

-@Autowired注解用在java.util.Map上时,Map的key必须是String类型,那么Spring将自动装配与之Map值类型兼容的bean,此时bean的名称作为键值。

相关@Autowired注解的更详细介绍,请移步如下文章:

  1. Spring注解之@Autowired组件装配
  2. Spring注解之@Autowired:装配构造函数和属性
  3. Spring注解之@Autowired:Setter 方法上使用@Autowired注解
  4. Spring注解之@Autowired:注入Arrays, Collections, and Maps

Spring注解之@Autowired自动装配bean 综述的更多相关文章

  1. Spring框架使用@Autowired自动装配引发的讨论

    问题描述 有同事在开发新功能测试时,报了个错,大致就是,在使用 @Autowired 注入时,某个类有两个bean,一个叫a,一个叫b. 一般这种情况应该声明注入哪个bean,他没有声明,他不知道这个 ...

  2. Spring注解开发系列Ⅴ --- 自动装配&Profile

    自动装配: spring利用依赖注入和DI完成对IOC容器中各个组件的依赖关系赋值.自动装配的优点有: 自动装配可以大大地减少属性和构造器参数的指派. 自动装配也可以在解析对象时更新配置. 自动装配的 ...

  3. spring的自动装配Bean与自动检测Bean

    spring可以通过编写XML来配置Bean,也可以通过使用spring的注解来装配Bean. 1.自动装配与自动检测: 自动装配:让spring自动识别如何装配bean的依赖关系,减少对<pr ...

  4. IDEA02 利用Maven创建Web项目、为Web应用添加Spring框架支持、bean的创建于获取、利用注解配置Bean、自动装配Bean、MVC配置

    1 环境版本说明 Jdk : 1.8 Maven : 3.5 IDEA : 专业版 2017.2 2 环境准备 2.1 Maven安装及其配置 2.2 Tomcat安装及其配置 3 详细步骤 3.1 ...

  5. Spring自动装配bean

    Spring推荐面向接口编程,这样可以很好的解耦具体的实现类. CompactDisc.class 文件: public interface CompactDisc { void play(); } ...

  6. spring中自动装配bean

    首先用@Component注解类: package soundsystem: import org.springframework.stereotype.Component; @Component p ...

  7. Spring(二)-生命周期 + 自动装配(xml) +自动装配(注解)

    1.生命周期 **Spring容器的 bean **的生命周期: 1.1 默认生命周期 1.1.1 生命周期 调用构造方法,创建实例对象: set方法,给实例对象赋值: init 初始化方法 初始化对 ...

  8. Spring 自动装配 Bean

    Spring3系列8- Spring 自动装配 Bean 1.      Auto-Wiring ‘no’ 2.      Auto-Wiring ‘byName’ 3.      Auto-Wiri ...

  9. Spring入门(5)-自动装配Bean属性

    Spring入门(5)-自动装配Bean属性 本文介绍如何装配Bean属性. 0. 目录 ByName ByType constructor 默认自动装配 混合使用自动装配和显示装配 1. ByNam ...

  10. Spring自动装配Bean详解

    1.      Auto-Wiring ‘no’ 2.      Auto-Wiring ‘byName’ 3.      Auto-Wiring ‘byType 4.      Auto-Wirin ...

随机推荐

  1. python实现批量自动访问站点URL并获取内容,自动模拟打开电脑端及移动端URL访问站点,打开URL页面获取页面内容

    问题描述:假设目前有多个网站URL,需要检查各站点keyword,description是否正常设置,如果人工逐个打开URL访问比较耗时,故采用python模拟电脑端和移动端自动打开网站URL访问,并 ...

  2. 单线程的Redis速度为什么快?

    博客:https://www.emanjusaka.com 博客园:https://www.cnblogs.com/emanjusaka 公众号:emanjusaka的编程栈 by emanjusak ...

  3. 实现Windows之间(win10)的桌面连接的三步走方法

    实现Windows之间(win10)的远程桌面连接的三步走方法 ‍ 目录 ‍ 目录 实现Windows之间(win10)的远程桌面连接的三步走方法 目录 环境 step1:打开两台Windows电脑的 ...

  4. mongodb关机重启

    正确关闭 mongodb 查看 mongodb 进程 ps -ef | grep mongodb # 或者 ps -aux | grep mongodb 杀掉 mongodb 进程(不推荐) kill ...

  5. pip和pip3如何更新

    pip pip install --upgrade pip pip3 pip3 install --upgrade pip

  6. 双剑合璧:kubectx+kubens玩转Kubernetes多集群管理

    在同时管理多个Kubernetes集群和数十个命名空间时,频繁输入--context和--namespace参数堪称效率杀手.由Ahmetb开发的kubectx/kubens工具组,用极简命令实现集群 ...

  7. Delphi Inputbox 输入时显示‘*’号

    unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms ...

  8. Linux权限之基础权限

    介绍 Linux是多用户的操作系统,允许多个用户同时登录和工作,Linux权限是操作系统用来限制不同用户对资源的访问机制.这里暂且将Linux的权限分为三类: 基本权限:给文件和目录的所属者.所属组. ...

  9. layui动态渲染select表单、初始化默认值、change事件监听等

    layui动态渲染,初始化默认值 var html = ''; html += '<select name="" lay-search lay-verify="re ...

  10. SpringBoot项目创建的三种方式

    目录 1 通过官网创建 2 通过IDEA脚手架创建 2.1 IDEA新建项目 2.2 起Group名字,选择Java版本,点击Next 2.3 选择Web依赖,选择Spring Web,确认Sprin ...