springbootBean三级缓存

简介: 个人理解

首先三级缓存中

一级缓存保存的是成熟期的bean对象

二级缓存保存的是已经实例化好但是还没完成初始化的

三级缓存存储的是ObjiceFactory 也就是每个bean对象都有自己的ObjectFactory去创建bean

如果没有用到动态代理的话

那么一二级缓存就已经可以解决循环引用了

如果是bean对象有用到动态代理的话

那么这个时候就需要用到三级缓存了

为什么呢

因为动态代理的话每一次访问都会创建新的对象

新的对象地址肯定不同

所以这个时候如果我们直接去访问的话 那么就死循环了

所以三级缓存实际上维护的是一个map集合

map集合里面存储的是动态代理的对象 我们拿到就可以直接用了 这个时候就不会死循环了

总结 如果bean对象是需要动态代理的话 那么就需要用到三级缓存 如果不需要的话 那么其实一二级缓存就可以解决循环引用的问题了

相关文章
|
6月前
|
缓存 Java Spring
Spring框架(四) 三级缓存与循环依赖
首先我们需要明白什么是循环依赖 , 打个比方 , 就是说A对象在创建的过程中 , 需要依赖注入B对象 , 但是B对象没有 , 就需要去创建 , 而在创建B对象的过程中又需要注入A对象 , A对象此时还在创建中,所以就构成了一个死循环 , A,B相互依赖 这样的关系被成为循环依赖(当然 , 可能还会有其他的情况),下面我们就来看看Spring是如何让解决循环依赖的
125 0
|
2月前
|
存储 缓存 Java
spring的三级缓存,以及循环依赖的形成和解决(详细)
spring的三级缓存,以及循环依赖的形成和解决(详细)
175 0
|
7月前
|
存储 缓存 Java
Spring为何需要三级缓存解决循环依赖,而不是二级缓存?
今天给大家分享一道大厂面试真题,Spring为何需要三级缓存解决循环依赖,而不是二级缓存?我一共分为五个部分来给大家介绍: 1、什么是循环依赖? 循环依赖就是指循环引用,是两个或多个Bean相互之间的持有对方的引用。在代码中,如果将两个或多个Bean互相之间持有对方的引用,因为Spring中加入了依赖注入机制,也就是自动给属性赋值。Spring给属性赋值时,将会导致死循环。那么,哪些情况会出现循环依赖呢?
153 0
|
11月前
|
XML SQL 缓存
MyBatis中三级缓存的理解
MyBatis中三级缓存的理解
|
缓存 Java Spring
Spring的循环依赖和三级缓存
Spring的循环依赖和三级缓存
806 0
Spring的循环依赖和三级缓存
|
Java 数据库连接 Spring
Spring源码之BeanFactoryPostProcessor(后置处理器)
有点水平的Spring开发人员想必都知道BeanFactoryPostProcessor也就是常说的后置管理器,这是Spirng生命周期中的一个接口,实现这个接口可以在beanFactory初始化前做一些事。
|
设计模式 缓存 安全
Spring缓存 & 解决循环依赖 & BeanFactory,FactoryBean区别?
Spring缓存 & 解决循环依赖 & BeanFactory,FactoryBean区别?
|
缓存 Java Spring
Spring 为何需要三级缓存解决循环依赖,而不是二级缓存?(2)
Spring 为何需要三级缓存解决循环依赖,而不是二级缓存?(2)
185 1
Spring 为何需要三级缓存解决循环依赖,而不是二级缓存?(2)
|
缓存 Java 开发者
Spring 为何需要三级缓存解决循环依赖,而不是二级缓存?(1)
Spring 为何需要三级缓存解决循环依赖,而不是二级缓存?(1)
231 0
Spring 为何需要三级缓存解决循环依赖,而不是二级缓存?(1)
|
缓存 Java Spring
Spring循环依赖及三级缓存
Spring循环依赖及三级缓存源码解析
Spring循环依赖及三级缓存