spring中第三级缓存存放的是什么
时间: 2024-06-14 14:08:55 浏览: 181
在Spring框架中,第三级缓存是用于存放已经完全初始化的Bean对象的缓存。具体来说,第三级缓存存放的是已经经过依赖注入、初始化方法调用等步骤的完全初始化的Bean对象。
Spring框架中的Bean对象创建过程可以简单概括为以下几个步骤:
1. 实例化Bean对象:通过反射或其他方式创建Bean对象的实例。
2. 属性注入:将Bean对象所需的属性值注入到实例中。
3. 初始化方法调用:调用Bean对象的初始化方法,可以是自定义的init方法或者实现了InitializingBean接口的afterPropertiesSet方法。
4. Bean对象完全初始化:经过上述步骤后,Bean对象就完成了完全初始化。
在Spring框架中,为了提高性能,引入了三级缓存机制。第三级缓存就是用于存放已经完全初始化的Bean对象。当需要获取一个Bean对象时,Spring首先会从第一级缓存(单例池)中查找,如果没有找到,则会从第二级缓存(早期对象池)中查找,如果还没有找到,则会从第三级缓存中查找。如果在第三级缓存中找到了完全初始化的Bean对象,则将其返回给调用方,并将其放入第二级缓存和第一级缓存中,以备下次使用。
需要注意的是,第三级缓存是可选的,可以通过配置来开启或关闭。在默认情况下,Spring框架是不开启第三级缓存的。
相关问题
Spring的第三级缓存中存放的是什么
Spring的第三级缓存中存放的是完全初始化但尚未被添加到容器中的Bean对象。在Spring容器创建Bean过程中,当Bean对象完成了属性注入和初始化方法调用,但还未被添加到容器中时,会被缓存在第三级缓存中。这个缓存是为了解决循环依赖问题而引入的,当需要解决循环依赖时,Spring会从第三级缓存中获取Bean对象,而不是去创建新的Bean实例。当循环依赖解决完成后,Bean对象会从第三级缓存中移除,并添加到容器中供其他Bean进行依赖注入。
spring中解决循环依赖的三级缓存中的第三级缓存是干嘛的
在Spring中解决循环依赖的过程中,使用了三级缓存。第三级缓存的作用是用于存放已经完成了属性填充但尚未完成初始化的Bean实例。
具体来说,当一个Bean A被创建并完成属性填充后,Spring会将其放入第三级缓存中。然后,Spring会检查Bean A是否有其他Bean依赖于它,如果有,Spring会尝试去解析这些依赖关系。
如果解析到某个依赖Bean B也正好在第三级缓存中,那么Spring会提前暴露Bean B的代理对象给依赖它的Bean A。这样,在Bean A完成初始化后,它所依赖的Bean B就已经可以使用了。
通过使用第三级缓存,Spring能够解决循环依赖的问题,确保在初始化阶段时,所有的Bean都能够正确地被创建和填充属性,并且可以正常地解析和处理它们之间的循环依赖关系。
阅读全文
相关推荐















