首页 > 其他分享 >spring三级缓存解决循环依赖

spring三级缓存解决循环依赖

时间:2022-09-27 11:38:39浏览次数:53  
标签:缓存 对象 spring 获取 bean 单例 三级

创建单例bean主要经过三个步骤:1.实例化,2.填充属性,3:初始化

一级缓存:singletonObjects,存放经过初始化后的bean。当通过名字获取bean的时候,如果这个名字对应的bean在一级缓存中,就直接从一级缓存中获取返回,这样就不会多次创建bean了。

二级缓存:earlySingletonObjects,存放根据原始对象进行AOP之后的代理对象。

三级缓存:singletonFactories,存放bean对应的工厂对象,在bean实例化之后就把生成最终对象的ObjectFactory对象放到三级缓存中,当从二级缓存获取不到对象的时候,就根据这个ObjectFactory生成最终对象。

注:只有单例bean会通过三级缓存提前暴露来解决循环依赖,而非单例的bean,每次从容器中获取都是一个新的对象,都会重新创建,所以非单例的bean是没有缓存的,不会将其放到三级缓存中。

标签:缓存,对象,spring,获取,bean,单例,三级
From: https://www.cnblogs.com/ldddd/p/16733711.html

相关文章