Spring高级面试题及详细答案(实战版).docxVIP

  • 1
  • 0
  • 约6.79千字
  • 约 9页
  • 2026-10-14 发布于河北
  • 举报

Spring高级面试题及详细答案(实战版).docx

Spring高级面试题及详细答案(实战版)

一、Spring核心原理高级考点

1.详细说说SpringIoC的三级缓存原理,以及为什么需要三级缓存,二级缓存能不能解决循环依赖?

答案:

SpringIoC容器解决单例Bean的Setter/字段循环依赖,核心依靠三级缓存机制,三级缓存存储的内容各司其职:

一级缓存(singletonObjects):存放完全初始化完成、属性填充完毕、可直接使用的完整单例Bean。

二级缓存(earlySingletonObjects):存放已经实例化、但未完成属性填充和初始化的原始Bean对象(半成品Bean),目的是避免重复创建Bean引用。

三级缓存(singletonFactories):存放Bean的对象工厂(ObjectFactory),核心作用是支持Bean的AOP代理循环依赖,提前暴露代理对象的引用。

循环依赖执行流程:

当A、B两个Bean互相依赖时,A先完成实例化,将自身的ObjectFactory放入三级缓存;随后A开始填充属性,需要注入B,触发B的创建;B创建时需要注入A,此时从三级缓存获取A的对象工厂,通过工厂获取A的引用(普通Bean返回原始对象,代理Bean返回代理对象),完成B的初始化后,A继续完成剩余属性填充和初始化,最终将完整A放入一级缓存,删除二、三级缓存中的A数据。

为什么二级缓存无法解决循环依赖?

如

文档评论(0)

1亿VIP精品文档

相关文档