您的位置:首页 > 编程语言 > Java开发

springIOC容器详解

2018-09-15 10:50 183 查看

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

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

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

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

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

这两个阶段中,

IoC
容器分别作了以下这些事情:

 

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

Spring
中提供了两种
IoC
容器:

  • BeanFactory
  • ApplicationContext

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

这里写图片描述


我们可以看到,

ApplicationContext
BeanFactory
的子类,所以,
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的注册

 

阅读更多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: