在上面的方法中的核心是getBean方法,Test1 创建后填充属性时依赖Test2,那么就去创建 Test2,在创建 Test2 开始填充时发现依赖于 Test1,但此时 Test1 这个半成品对象已经存放在缓存到 singletonObjects 中了,所以Test2可以正常创建,在通过递归把 Test1 也创建完整了。
作者:Vtjuejin.im/post/5e927e27f265da47c8012ed9前言Spring如何解决的循环依赖,是近两年流行起来的一道Java面试题。其实笔者本人对这类框架源码题还是持一定的怀疑态度的。
先不去管Spring中的循环依赖,我们先实现一个自定义注解,来模拟@Autowired的功能。原来是,在实例化A后,属性注入阶段发现需要注入B的实例,于是去实例化B,B又需要依赖A,因此去实例化A,一直依赖下去...
Spring的循环依赖问题一直是中高级Java高频面试题之一,其中的考点就在于你对Spring中bean的加载过程是否有一定的理解。循环依赖,注意,这里说的是依赖,而不是调用,这是两个概念,一定不要混淆。