Spring 自动装配

  • Post author:
  • Post category:其他




Spring 自动装配


一、概述

在spring中,使用autowire来配置自动装载模式,对象无需自己查找或创建与其关联的其他对象,由容器负责把需要相互协作的对象引用赋予各个对象。


二、基于xml配置的自动装配

autowire属性五种装配方式:

  • no:默认的方式是不进行自动装配的,通过手工设置ref属性来进行装配bean。
  • byName:通过bean的名称进行自动装配,如果一个bean的 property 与另一bean 的name 相同,就进行自动装配。
  • byType:通过参数的数据类型进行自动装配。
  • constructor:利用构造函数进行装配,并且构造函数的参数通过byType进行装配。
  • autodetect:自动探测,如果有构造方法,通过 construct的方式自动装配,否则使用 byType的方式自动装配。


三、基于注解的自动装配

使用@Autowired、@Resource注解来自动装配指定的bean。在使用@Autowired注解之前需要在Spring配置文件进行配置。

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

  1. 首先在容器中查询对应类型的bean:
  2. 如果查询结果刚好为一个,就将该bean装配给@Autowired指定的数据;
  3. 如果查询的结果不止一个,那么@Autowired会根据名称来查找;
  4. 如果上述查找的结果为空,那么会抛出异常。解决方法时,使用required=false。

@Autowired和@Resource之间的区别:

  • @Autowired默认是按照类型装配注入的,默认情况下它要求依赖对象必须存在(可以设置它required属性为false)。
  • @Resource默认是按照名称来装配注入的,只有当找不到与名称匹配的bean才会按照类型来装配注入。



版权声明:本文为qq_35958391原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。