Spring-如何解决循环依赖

依赖注入

解决循环之前我们需要知道Spring 依赖注入方式
1、构造器注入
2、属性注入
本文讲的是解决属性注入的方式发生循环依赖的场景
对于构造器注入时发生循环依赖,可以考虑使用@Lazy注解

主要类

AbstractBeanFactory
DefaultSingletonBeanRegistry

大致结构图

Spring-如何解决循环依赖_第1张图片

关键代码解析

第一次getbean 为空

Spring-如何解决循环依赖_第2张图片
Spring-如何解决循环依赖_第3张图片

第二次getSingleton

Spring-如何解决循环依赖_第4张图片
Spring-如何解决循环依赖_第5张图片
Spring-如何解决循环依赖_第6张图片
Spring-如何解决循环依赖_第7张图片

相关问题思考

为什么要用 earlySingletonObjects,删了可以吗?

放入earlySingletonObjects中的对象是根据工厂方法创建出来的,避免了每次都去创建,节省资源。因为工厂的创建方法会很复杂。提升性能。

你可能感兴趣的:(Spring)