阿里面试官居然不懂Spring是如何解决循环依赖的?
日期: 2021-05-27 分类: 个人收藏 465次阅读
构造器的循环依赖是无法解决的!
当Bean产生循环依赖时,比如BeanA的构造方法依赖BeanB作为成员需要注入,BeanB也依赖BeanA,你觉得会出现什么问题呢?又有哪些解决方式呢?
通过set方法去处理,背后的原理其实是缓存。
主要解决方式:使用三级缓存
- singletonObjects: 一级缓存, Cache of singleton objects: bean name --> bean instance
- earlySingletonObjects: 二级缓存, Cache of early singleton objects: bean name --> bean instance 提前曝光的BEAN缓存
- singletonFactories: 三级缓存, Cache of singleton factories: bean name --> ObjectFactory。需要的对象被代理时,就必须使用三级缓存。
除特别声明,本站所有文章均为原创,如需转载请以超级链接形式注明出处:SmartCat's Blog
精华推荐