概述
????个人主页:热爱生活的李????
❤️感谢大家阅读本文,同时欢迎访问本人主页查看更多文章❤️
????本人也在学习阶段,如若发现问题,请告知,非常感谢????
个人理解,个人理解,个人理解
可能有错,可能有错,可能有错
错了勿喷,错了勿喷,错了勿喷
????一级缓存
一级缓存: 保存成品
当创建service1时,需要service2,然后创建service2,service2里面有service1,然后创建service1 …
不能解决循坏依赖
????二级缓存(1)
一级缓存:保存成品
二级缓存:保存半成品(保存代理对象)
判断缓存是否存在都是先从一级缓存找再查二级缓存
递归进行参数注入的所有可以注入成功
没有AOP
然后service1在一级缓存中找到了service2中找到了那么就可以创建成功service1
存在AOP
假如service1存在AOP
那么一级缓存中的service2里面的service1就是原始的service1而不是代理service1所有出错
????二级缓存(2)
一级缓存:保存成品
二级缓存:保存半成品(保存代理对象+原始Bean)
流程与上面是一样的,使用Spring中的三级缓存演示
打断点(快速到service1或者service2)
beanName.equals(“service1”) || beanName.equals(“service2”)
现在二级与三级缓存都没有
执行完发现三级缓存有而二级缓存没有
但是我们是为了演示二级缓存,所有使用评估表达式
保存到二级缓存成功
同理将service2保存进二级缓存
service2直接成功
所有这种二级缓存是可以解决循环依赖的
但是这种情况了不知道这个代理类是不是存在循坏依赖,所以只要是被代理那么都要初始化前创建代理类
而Spring中的规则是 创建代理类是在Bean初始化后,而这是在初始化前
????三级缓存
一级缓存:保存成品
二级缓存:保存半成品
三级缓存:保存BeanFactory
流程看三级缓存
相对于二级缓存
就是如果是没有循坏依赖的aop那么就会在初始化后创建代理对象而存在aop那么也会提前创建代理对象
最后
以上就是勤奋钥匙为你收集整理的Spring中是否必须使用三级缓存才能解决循环依赖的全部内容,希望文章能够帮你解决Spring中是否必须使用三级缓存才能解决循环依赖所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复