上一题下一题

allowCircularReferences关闭后属性注入循环依赖的失败位置

进阶版
来源:meituan中级工程师
草稿该题目为草稿状态,前台公开题库中不可见。
答案解析

关闭 allowCircularReferences 后,属性注入的循环依赖不是在第一个 Bean 创建时立刻失败,而是在 循环链路中第二次回头获取正在创建中的 Bean 时失败 。

比如有两个 Bean:

执行流程大概是这样的:

1. Spring 开始创建 A,先实例化 A。 2. 正常情况下,如果允许循环依赖,Spring 会在 doCreateBean() 里提前暴露 A 的三级缓存,也就是放入 singletonFactories。 3. 但如果 allowCircularReferences = false,这里不会提前暴露 A。

对应位置在:

里面有类似判断:

```java boolean earlyS

登录后查看完整内容