Spring自动装配、Ioc工作原理与分模块开发

本文最后更新于:1 年前

自动装是指Spring在实例化当前bean时,从Spring容器中找到匹配的实例赋值给当前bean的属性。自动装配有两种策略:

  • byName 根据当前Bean的属性名在Spring容器中寻找匹配的对象 ,如果根据name找打了bean但是类型不匹配则抛出异常。
  • byType 根据当前Bean的属性类型在Spring容器中寻找匹配的对象,如果根据类型找到了多个bean会抛出异常。

分模块开发是指将Spring主配置文件中的部分配置拆解到其他配置文件中,而在 Spring 主配置文件通过 import 标签进行加载。

自动装配

自动装配是指Spring在实例化当前bean的时候从Spring容器中找到匹配的实例赋值给当前bean的属性。

自动装配策略有两种:

  • byName :根据当前Bean的属性名在Spring容器中寻找匹配的对象 。如果根据name找打了bean,但是类型不匹配会抛出异常。

    1
    2
    3
    <bean id="clazz" class="com.qfedu.ioc.bean.Clazz"></bean>

    <bean id="stu2" class="com.qfedu.ioc.bean.Student" autowire="byName"></bean>
  • byType :根据当前Bean的属性类型在Spring容器中寻找匹配的对象。如果根据类型找到了多个bean则会抛出异常。

    1
    2
    3
    <bean id="clazz2" class="com.qfedu.ioc.bean.Clazz"></bean>

    <bean id="stu2" class="com.qfedu.ioc.bean.Student" autowire="byType"></bean>

Spring-IoC 工作原理

引入其他配置文件(分模块开发)

实际开发中,Spring 的配置内容非常多,这就导致 Spring 配置很繁杂且体积很大,所以,可以将部分配置拆解到其他配置文件中,而在 Spring 主配置文件通过 import 标签进行加载。

Spring重点配置总结

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<bean>标签
id属性:在容器中Bean实例的唯一标识,不允许重复
class属性:要实例化的Bean的全限定名
scope属性:Bean的作用范围,常用是Singleton(默认)和prototype

<property>标签:属性注入
name属性:属性名称
value属性:注入的普通属性值
ref属性:注入的对象引用值
<list>标签
<map>标签
<properties>标签

<constructor-arg>标签

<import>标签:导入其他的Spring的分文件

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!