# 测试2 **Repository Path**: apple_1030907690/CeShi2 ## Basic Information - **Project Name**: 测试2 - **Description**: 测试2测试2测试2测试2测试2测试2 - **Primary Language**: 其他 - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2017-10-09 - **Last Updated**: 2024-07-11 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README 测试代码 spring spring boot mybatis tomcat 啊哈算法的测试代码 https://www.51cto.com/article/747437.html Spring为什么使用三级缓存而不是两级解决循环依赖问题? ![输入图片说明](images/image.png) - 从上图可以直观的看出,循环依赖的问题已经得到了完美解决,但是又有了一个新问题,这个缓存中的bean可能有已经创建完成的、正在创建中还没有注入依赖的,它们都掺杂在一起,我们如何保证Map里面的所有对象是完整的呢?一层缓存很显然不符合设计规范,也缺乏安全性与扩展性。 ![输入图片说明](images/image2.png) ![输入图片说明](images/image3.png) https://blog.csdn.net/meser88/article/details/130827212 所以,猜想 Spring 不用二级缓存来解决循环依赖问题,是为了保证处理时清晰明了,bean 的创建就是三个阶段: createBeanInstance --> populateBean --> initializeBean 只有碰到 AOP 代理 bean 被循环依赖时的场景,才去特殊处理,提前生成 AOP 代理 bean https://zhuanlan.zhihu.com/p/496273636 感觉主要还是因为spring开发者不希望循环依赖的处理影响了原本创建bean的流程,原本是在bean初始化之后,再通过后置处理来创建代理对象;如果只使用一级缓存,那势必要在实例化bean后直接创建代理对象放入缓存,这样就仅仅因为循环依赖破坏了原本的流程,个人认为是没有必要的。当然这只是我的理解,毕竟大家都是通过源码来推测spring开发者的想法