Spring注解之@Autowired自动装配bean 综述

  @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
原文地址:https://www.cnblogs.com/east7/p/13289866.html