1. 首页
  2. 编程语言
  3. Java
  4. 聊聊Spring循环依赖三级缓存是否可以减少为二级缓存的情况

聊聊Spring循环依赖三级缓存是否可以减少为二级缓存的情况

上传者: 2021-12-07 03:41:08上传 PDF文件 120.50 KB 热度 13次

基于Spring-5.1.5.RELEASE问题都知道Spring通过三级缓存来解决循环依赖的问题。但是是不是必须三级缓存才能解决,二级缓存不能解决吗?要分析是不是可以去掉其中一级缓存,就先过一遍Spring是如何通过三级缓存来解决循环依赖的。循环依赖所谓的循环依赖,就是两个或则两个以上的bean互相依赖对方,最终形成闭环。B对象需要注入A对象,发现对象池里还没有A对象。三级缓存Spring解决循环依赖的核心思想在于提前曝光:通过构建函数创建A对象。A对象继续注入其他属性和初始化,之后将完成品A对象放入完成品缓存。Sping选择了第二种,如果是第一种,就会有以下不同的处理逻辑:在提前曝光半成品时,直接执行getEarlyBeanReference创建到代理,并放入到缓存earlySingletonObjects中。

用户评论