Spring Bean的初始化源码解析

2018-02-09  本文已影响0人  timothyue1

spring bean在初始化的过程中,大致流程如下,后面我们将根据以下的几点来分析和理解源码:

1.转换对应的beanName

2.尝试从缓存中加载单例

3.bean的实例化

4.原型模式的依赖检查

5.检测parentBeanFacotory

6.将存储XML配置文件的GernericBeanDefinition转换为RootBeanDefinition.

7.寻找依赖

8.针对不同的scope进行Bean的创建

9.类型转换

FactoryBean的使用

一般情况,spring通过反射机制利用Bean的class属性指定实现类来实现Bean。

图1

缓存中获取单例Bean

单例只会在spring的同一个容器内被创建一次,后续再获取Bean直接从单例缓存中获取。此时会存在循环依赖的情况,程序首先尝试从缓存中加载,然后再次尝试从singletionFactories中加载。如果存在循环依赖,spring创建Bean的原则是不等Bean创建完成就会将创建Bean的objectFactory提早曝光加入到缓存中,一旦下一个Bean创建时需要依赖上一个Bean,则直接使用objectFactory.

上一篇 下一篇

猜你喜欢

热点阅读