bean的加载-获取单例和准备创建bean

1、获取单例
如果缓存中不存在已经加载的单例bean,就需要重头开始bean的加载过程,在spring中AbstracBeanFactory的 getSingleton的重载方法实现了bean的加载
1.1、检查缓存是否已经加载过,spring3.2是直接使用synchronized锁定需要同步的变量,4.0之后
Object singletonObject = this.singletonObjects.get(beanName);实例了一个对象去操作
1.2、检查 earlySingletonObjects里面是否保存beanName和bean实例之间的关系
1.3、如果还是没有,则需要根据beanName创建一个ObjectFactory,里面用于保存beanName和bean工厂之间的关系 beanName,ObjectFactory之间的关系,然后把值记录到earlySingletonObjects,同时移除singletonFactories里面beanName之间的关系

2、准备创建bean
在spring中真正可以干活的函数是以do开头的,对于createBean也是如此,只是做一些准备工作
2.1、根据设置的class属性或者根据className来解析class


2.2、对override属性进行标记和验证


2.3、应用初始化前的处理器,解析指定bean是否存在初始化前的短路操作
2.4、创建bean

猜你喜欢

转载自blog.csdn.net/zhangchangbin123/article/details/80768822