Spring源码学习心得

IOC容器的初始化过程

这里谈的是IOC容器的初始化过程,不包括Bean的依赖注入的实现。SpringIOC的设计中,Bean的载入和依赖注入是两个独立的过程。依赖注入一般发生在应用第一次通过getBean向容器索取Bean的时候。

IOC容器的初始化是由refresh()方法来启动的,这个启动包括BeanDefinition的Resource定位,载入和注册三个基本过程。

1.  Resource定位过程

Resource定位指的是BeanDefinition的资源定位,由ResourceLoader通过统一的Resource接口完成。

2.  BeanDefinition的载入

把用户定义好的Bean表示成IOC容器内部的数据结构,而这个容器内部的数据结构就是BeanDefinition。BeanDefinition实际上就是POJO对象在IOC容器中的抽象,通过BeanDefinition定义的数据结构,使IOC容器能够方便地对POJO进行管理。

IOC容器载入Bean的过程

3.  向IOC容器注册BeanDefinition

这个过程是通过调用BeanDefinitionRegistry接口的实现来完成的。IOC容器内部将BeanDefinition注入到一个HashMap中,IOC容器就是通过这个HashMap来持有BeanDefinition数据的。

注册的调用过程

注意:

以上过程中IOC容器大致完成了管理Bean对象的数据准备工作,但是重要的依赖注入还没发生,此过程中IOC容器中的BeanDefinition中存在的还只是一些静态的配置信息。

依赖注入

依赖注入是用户第一次向IOC容器索要Bean时被触发的。当然也有例外,就是在BeanDefinition信息中通过控制lazy-init属性来让容器完成对Bean的预实例化。

依赖注入过程

你可能感兴趣的:(其他)