spring的三级缓存:
Spring 容器的“三级缓存”
Spring 容器的整个生命周期中,单例Bean对象是唯一的。即可以使用缓存来加快访问
Spring 源码中使用了大量的 Cache 手段,此中在循环依靠题目的解决过程中就使用了“三级缓存”
三级缓存的意义
singletonObject:一级缓存,存放完全实例化且属性赋值完成的 Bean ,可以直接使用
earlySingletonObject:二级缓存,存放早期 Bean 的引用,尚未装配属性的 Bean
singletonFactories:三级缓存,存放实例化完成的 Bean 工厂
除了三级缓存,还有另外两个缓存
singletonsCurrentlyInCreation: bean 在创建的过程中都会存储在此,创建完成移出
alreadyCreated:存放至少被创建一次的 bean,不会重复。即标志 bean 是否创建完成
原文链接:https://blog.csdn.net/weixin_44181671/article/details/108630950
对于Spring循环依靠的情况总结如下:
不能解决的情况:
- 构造器注入循环依靠
- prototype field属性注入循环依靠
能解决的情况:
- field属性注入(setter方法注入)循环依靠
spring ioc 内部的三级缓存包管了它不会出现循环依靠题目。为什么呢?
https://blog.csdn.net/weixin_44181671/article/details/108630950
但末了循环依靠最终是设计层面的题目,应该从设计层面来制止它,以免后续体系难以维护。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |