为什么三级缓存而非二级?
分析为什么Spring需要三级缓存而不是二级来解决循环依赖。
回答
古法程序员
核心原因:AOP代理。
代理在postProcessAfterInitialization创建,但循环依赖在属性填充阶段就已发生。三级缓存的ObjectFactory通过getEarlyBeanReference检查是否需要提前创建AOP代理。
只有二级:要么都提前创建代理(浪费性能),要么循环依赖拿不到代理(功能缺陷)。
分析为什么Spring需要三级缓存而不是二级来解决循环依赖。
核心原因:AOP代理。
代理在postProcessAfterInitialization创建,但循环依赖在属性填充阶段就已发生。三级缓存的ObjectFactory通过getEarlyBeanReference检查是否需要提前创建AOP代理。
只有二级:要么都提前创建代理(浪费性能),要么循环依赖拿不到代理(功能缺陷)。