建议收藏!利用Spring解决循环依赖,深入源码给你讲明白! (3)

此时serviceBB的属性赋值完毕,serviceBB的populateBean方法执行结束。其属性service AA指向还未执行完成populateBean()方法的bean serviceAA,等待后续的递归返回。

protected void addSingleton(String beanName, Object singletonObject) { synchronized (this.singletonObjects) { //将serviceBB放入一级缓存 this.singletonObjects.put(beanName, (singletonObject != null ? singletonObject : NULL_OBJECT)); //从三级缓存,二级缓存中删除 this.singletonFactories.remove(beanName); this.earlySingletonObjects.remove(beanName); this.registeredSingletons.add(beanName); } }

此时serviceBB创建完毕。递归返回继续还未属性赋值完成的bean serviceAA。调用 addSingleton()方法,同上将bean serviceAA放入一级缓存

总结

欢迎关注公众号:前程有光,领取一线大厂Java面试题总结+各知识点学习思维导+一份300页pdf文档的Java核心知识点总结!

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpjgys.html