springbootBean三级缓存

简介: 个人理解

首先三级缓存中

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

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

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

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

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

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

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

为什么呢

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

新的对象地址肯定不同

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

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

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

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

相关文章
|
缓存 Java Spring
Spring框架(四) 三级缓存与循环依赖
首先我们需要明白什么是循环依赖 , 打个比方 , 就是说A对象在创建的过程中 , 需要依赖注入B对象 , 但是B对象没有 , 就需要去创建 , 而在创建B对象的过程中又需要注入A对象 , A对象此时还在创建中,所以就构成了一个死循环 , A,B相互依赖 这样的关系被成为循环依赖(当然 , 可能还会有其他的情况),下面我们就来看看Spring是如何让解决循环依赖的
166 0
|
存储 缓存 Java
Spring 动态代理时是如何解决循环依赖的?为什么要使用三级缓存?
在研究 『 Spring 是如何解决循环依赖的 』 的时候,了解到 Spring 是借助三级缓存来解决循环依赖的。
491 0
|
7月前
|
安全 Java Spring
Spring框架中的单例Bean是线程安全的吗?
Spring框架中的单例Bean是线程安全的吗?
93 1
|
6月前
|
缓存 Java Spring
|
6月前
|
缓存 算法 Java
spring-三级缓存-生命周期-spring事务-IOC-AOP
spring-三级缓存-生命周期-spring事务-IOC-AOP
|
7月前
|
存储 缓存 Java
spring的三级缓存,以及循环依赖的形成和解决(详细)
spring的三级缓存,以及循环依赖的形成和解决(详细)
942 0
|
XML 缓存 Java
循环依赖和三级缓存原来是这么回事
我们都知道,Spring可以通过三级缓存解决循环依赖的问题,这也是面试中很常见的一个面试题,本文就来着重讨论一下有关循环依赖和三级缓存的问题。
|
存储 缓存 Java
Spring为何需要三级缓存解决循环依赖,而不是二级缓存?
今天给大家分享一道大厂面试真题,Spring为何需要三级缓存解决循环依赖,而不是二级缓存?我一共分为五个部分来给大家介绍: 1、什么是循环依赖? 循环依赖就是指循环引用,是两个或多个Bean相互之间的持有对方的引用。在代码中,如果将两个或多个Bean互相之间持有对方的引用,因为Spring中加入了依赖注入机制,也就是自动给属性赋值。Spring给属性赋值时,将会导致死循环。那么,哪些情况会出现循环依赖呢?
202 0
|
安全 Java 开发者
Spring框架中的单例bean是线程安全的吗?
Spring框架中的单例bean是线程安全的吗?
135 0
|
设计模式 Java 应用服务中间件
不是单例的单例——巧用ClassLoader
本文通过如何将一个单例类实例化两次的案例,用代码实践来引入 Java 类加载器相关的概念与工作机制。理解并熟练掌握相关知识之后可以扩宽解决问题的思路,另辟蹊径,达到目的。
5794 1