allowCircularReferences关闭后属性注入循环依赖的失败位置
进阶版来源:meituan中级工程师
草稿
答案解析
关闭 allowCircularReferences 后,属性注入的循环依赖不是在第一个 Bean 创建时立刻失败,而是在 循环链路中第二次回头获取正在创建中的 Bean 时失败 。
比如有两个 Bean:
执行流程大概是这样的:
1. Spring 开始创建 A,先实例化 A。 2. 正常情况下,如果允许循环依赖,Spring 会在 doCreateBean() 里提前暴露 A 的三级缓存,也就是放入 singletonFactories。 3. 但如果 allowCircularReferences = false,这里不会提前暴露 A。
对应位置在:
里面有类似判断:
```java boolean earlyS
登录后查看完整内容
