Spring加载流程&Bean的生命周期
推荐篇博文 Spring中bean的生命周期(最详细)
循环依赖
解决循环依赖的关键是将【实例化】与【初始化】两个过程分开。
二级缓存
假设只使用二级缓存,能否解决循环依赖问题?答案是可以。 但是这仅限于在未使用AOP生成代理对象的情况下。
代理对象实例化的时候,实例化对象是原始对象 若没有三级缓存,此时若根据类名直接获取对象的话,获取的是原始对象 而我们想要的肯定是通过类名直接获取代理对象 所以Spring在类加载过程中,直接将实例化的对象放入三级缓存中 从三级缓存中获取类对象的时候,判断类是否被代理,若被代理则返回代理对象
三级缓存
Spring在启动过程中,使用到了三个map,称为三级缓存。
评论