springIOC容器详解

SpringIOC容器又被搞了,我tm今天要搞定这个东西

我目前看过最好的讲解是这篇作者的

https://www.jianshu.com/p/4007079cb6c0

SpringIoC容器在实现控制反转和依赖注入的过程中,可以划分为两个阶段:

  • 容器启动阶段
  • Bean实例化阶段

这两个阶段中,IoC容器分别作了以下这些事情:

 

2、IoC容器及IoC容器如何获取对象间的依赖关系

Spring中提供了两种IoC容器:

  • BeanFactory
  • ApplicationContext

这两个容器间的关系如下图:

这里写图片描述


我们可以看到,ApplicationContextBeanFactory的子类,所以,ApplicationContext可以看做更强大的BeanFactory

2.我们来看看这两个容器的区别:

BeanFactory是基础的IOC容器:如果没有特殊指定,默认采用延迟初始化策略(lazy-load)。只有当客户端对象需要访问容器中的某个受管对象的时候,才对该受管对象进行初始化以及依赖注入操作。所以,相对来说,容器启动初期速度较快,所需要的资源有限。

ApplicationContext:在BeanFactory的基础上创建,相对更高级,提供了更多的功能,在启动时就完成所有初始化,容
器启动时间较之BeanFactory也会长一些。

 

3、万里长征第一步:加载配置文件信息

我们说BeanFactory容器:

BeanFactory容器中,每一个注入对象都对应一个BeanDefinition实例对象,该实例对象负责保存注入对象的所有必要信息,包括其对应的对象的class类型、是否是抽象类、构造方法参数以及其他属性等。当客户端需要时,容器会通过这些信息返回一个可用的实例

BeanFactory对象从哪里来呢?通过一个专门解析配置文件的类。BeanDefinitionReader他负责读取xml文件并解析,将解析的内容映射到BeanDefinition

 

4、笼统讲解容器中对象的创建和获取

实现Bean注册的接口是BeanDefinitionRegistry,通过这个接口注册Bean,它要通过BeanDefinition对Bean完成注册。

总结来说就是我们先通过BeanDinfitionReader注册到BeanDefintion中,再通过BeanDefinitionRegistry完成bean的注册

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值