美文网首页
spring为什么需要三级缓存(最通透版!)

spring为什么需要三级缓存(最通透版!)

作者: holyABCD | 来源:发表于2024-02-28 17:42 被阅读0次

前言

看这篇文章之前,你一定要对createBean代码相当了解!因为文章不会写一处代码!

为什么?

为什么采用三级缓存?
    spring默认不允许循环依赖,如果不考虑循环依赖的情况,一级缓存即可
    为什么一层缓存不行?
        一方面讲:拿spring的bean生命周期来说,创建实例,装填依赖,初始化内容,最终放到一级缓存中,一级缓存里放的就应该是最终的数据。如果要提前暴露,需要一层缓存。
        二方面讲:考虑循环依赖,提前暴露的地址和最终的地址有可能不一样,这你得承认(你可以自定义postProcessor在postProcessAfterInitialization中进行修改),那么提前暴露的东西有没有被人用,就需要知晓,如果被人用了,但是地址不一样就,就需要报警!
    为什么二层缓存不行?
        这块得判断,不要哪层?
        如果不要第二层
            那么就是暴露的匿名内部类那里获取AOP(不考虑非AOP情况,因为bean不变,无意义)又分成两种情况,
                获取匿名内部类后不移入一级缓存
                    显而易见,如果有多个使用提前暴露的,会生成多个引用
                获取匿名内部类后移入一级缓存
                    保证了只生成一个引用,提前暴露的被人用了,也可以判断出来,但是显然不符合一级缓存存放最终bean的原则
        如果不要第三层,那么就实例完,直接放到二级缓存,这样就判断不出来是否被人用了
    ==== 以上就是为什么用三级缓存的完整解释,完结,撒花!

相关文章

网友评论

      本文标题:spring为什么需要三级缓存(最通透版!)

      本文链接:https://www.haomeiwen.com/subject/dbrfzdtx.html