图文描述使用三级缓存后,解决循环依赖的过程,以及过程中调用的关键方法。
以下内容为看完相关视频讲解后自行整理,如有不当之处敬请大家指正。
A类中有个属性是B类的对象b,B类中有个属性是A类的对象a。
入口为创建A对象。
1. 尝试找到A对象,doGetBean
2. 进一步地,获取A的单例对象,getSingleton,返回了null
3. 开始实例化A对象,doCreateBean
4. 进一步地,创建A的bean实例,createBeanInstance
5. 把A的bean实例(工厂)放入三级缓存,addSingletonFactory