本篇内容主要讲解“Spring初始化Bean的使用方法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Spring初始化Bean的使用方法”吧!
创新互联主要从事成都网站建设、成都网站制作、网页设计、企业做网站、公司建网站等业务。立足成都服务长子,十余年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:18980820575
1、记录创建bean的ObjectFactory,目的是为了解决循环依赖
if (instanceWrapper == null) {
//上一篇bean的加载后部分主要分析了bean的创建,此步骤完成之后bean已经创建完成,但属性还没有赋值,Spring
//解决循环依赖的关键步骤就在此步骤完成之后,bean已创建但还没有属性赋值,如下图
instanceWrapper = createBeanInstance(beanName, mbd, args);
}
如下图,以最简单的AB循环依赖为例,A中有属性类B,B中又有属性类A,那么初始化beanA的过程如下图.

//上图中addSingletonFactory逻辑,只有是单例的,允许循环依赖且该bean正在创建中(创建时会记录该属性,创建完成会移除该属性),
//只有三个条件都满足才会addSingletonFactory
boolean earlySingletonExposure = (mbd.isSingleton() && this.allowCircularReferences
&& isSingletonCurrentlyInCreation(beanName));
if (earlySingletonExposure) {
//为避免后期循环依赖,可以在bean初始化后属性赋值之前将创建实例的ObjectFactory加入工厂
addSingletonFactory(beanName, new ObjectFactory