烂大街的Spring循环依赖该如何回答?

https://mp.weixin.qq.com/s?__biz=MzI1NDQ3MjQxNA==&mid=2247494458&idx=1&sn=35d731fa75dcaf2f9ff1420deee1bbac&chksm=e9c6128bdeb19b9d351c27d8460e2c23791b2abf19ef5dabfe6cc7c60f4a63333384a9d4f7e0&scene=126&sessionid=1608772758&key=9772f77e9c216c7713643600854508e439fe0b091f2763bf1fa4a6aff8f53ec4b9c6030e4020e3e4ea9d2cb15c30f010cce36afca4ad2d5a62e1c88521bc4a9a4c656d0ff22d0585231c60df0a94ae0b6309402326ba71463df72eedc5a5262436981a7ecdeec71af9c5d797c1a49000e5f1a0ac10c0e022426e608a08ce2ae5&ascene=1&uin=MjAzOTkwMzU2MA%3D%3D&devicetype=Windows+7+x64&version=6300002f&lang=zh_CN&exportkey=AfiqHh1T3LrdsiEIlCrUcUc%3D&pass_ticket=FKxAqMZ2cO4LFBrGsQCnfb7UvynguqytZtEDZr1wAqA1ulix7FTTn2MK0tDKchjv&wx_header=0

浅谈Spring 解决循环依赖必须要三级缓存吗-LMLPHP

浅谈Spring 解决循环依赖必须要三级缓存吗

https://www.jb51.net/article/197450.htm

重点

我们可以知道 Spring 需要三级缓存的目的是为了在没有循环依赖的情况下,延迟代理对象的创建,使 Bean 的创建符合 Spring 的设计原则。

测试证明,二级缓存也是可以解决循环依赖的。为什么 Spring 不选择二级缓存,而要额外多添加一层缓存呢?

如果 Spring 选择二级缓存来解决循环依赖的话,那么就意味着所有 Bean 都需要在实例化完成之后就立马为其创建代理,而 Spring 的设计原则是在 Bean 初始化完成之后才为其创建代理。所以,Spring 选择了三级缓存。但是因为循环依赖的出现,导致了 Spring 不得不提前去创建代理,因为如果不提前创建代理对象,那么注入的就是原始对象,这样就会产生错误。

Spring 为何需要三级缓存解决循环依赖,而不是二级缓存

https://www.cnblogs.com/semi-sub/p/13548479.html

浅谈Spring 解决循环依赖必须要三级缓存吗-LMLPHP

一文告诉你Spring是如何利用"三级缓存"巧妙解决Bean的循环依赖问题的【享学Spring】

https://cloud.tencent.com/developer/article/1497692

曹工说Spring Boot源码(29)-- Spring 解决循环依赖为什么使用三级缓存,而不是二级缓存

https://www.cnblogs.com/grey-wolf/p/13034371.html#_label5

03-13 08:50