spring循环依赖二级缓存,spring一级缓存能解决循环依赖吗
一级缓存存储实例化的对象。二级缓存存储已经在内存空间中创建的对象,但是属性还没有被分配。三级缓存存储对象工厂,用于创建预先暴露给bean的对象。
@ service public class test service 1 { @ auto wired private test service 2 test service 2;public void test1(){ } } @ service public class test service 2 { @ Autowired private test service 1 test service 1;public void test2() { }}
TestService1先去一级缓存看看有没有实例。如果没有实例,继续检查二级缓存。如果没有实例,请检查三级缓存。没有实例时,创建实例。在创建的过程中,提前暴露它们,并添加到三级缓存中。
这时进行属性赋值,发现还有一个testService2,没有赋值,为空。于是,我去一级缓存看有没有testSerivce2的实例,发现没有实例。我去二级缓存看有没有,如果没有实例,我就创建一个实例,提前曝光,添加到三级缓存。
此时在testSerivce2对象中发现testService1中没有赋值,然后将其赋值给testService1。如果一级缓存中没有赋值,则转到二级缓存,转到三级缓存,将三级缓存中的实例testService1添加到二级缓存中。删除实例testService1的三级缓存实例。此时testService2中有实例对象,对象中的testService1也有值,是可用的实例对象。只需将这个对象移动到一级缓存中,删除三级缓存中的testService2即可。
此时testService1中的testService2属性可以从一级缓存中获取testService2实例,用赋值填充,testService1被实例化,这样就把testService1从二级缓存移到了一级缓存中,并删除了二级缓存中testService1的实例。
关于在Spring中使用三级缓存解决循环依赖的过程,本文到此结束。关于Spring中三级缓存解决循环依赖的更多信息,请搜索之前关于流行IT的文章或者继续浏览下面的相关文章。我希望你以后能更多地支持流行音乐!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。