请你说说Spring是怎么解决循环依赖的?多例对象之间的循环依赖?单例和多例之间的循环依赖?-笔试面试资料

这是qklbishe.com第15685 篇笔试面试资料
提供答案分析,通过本文《请你说说Spring是怎么解决循环依赖的?多例对象之间的循环依赖?单例和多例之间的循环依赖?-笔试面试资料》可以理解其中的代码原理,这是一篇很好的求职学习资料
本站提供程序员计算机面试经验学习,笔试经验,包括字节跳动/头条,腾讯,阿里,美团,滴滴出行,网易,百度,京东,小米,华为,微软等互联网大厂真题学习背诵。

答案:
请你说说Spring是怎么解决循环依赖的?多例对象之间的循环依赖?单例和多例之间的循环依赖?

请你说说Spring是怎么解决循环依赖的?多例对象之间的循环依赖?单例和多例之间的循环依赖? 查克

多个bean之间的互相引用,导致一个闭环的出现。

采用三级缓存模式来解决循环依赖问题。

singletonFactories : //单例对象工厂的cache earlySingletonObjects ://提前暴光的单例对象的Cache singletonObjects://单例对象的cache

注意:构造器注入导致的循环依赖无法解决。

假设现在有两个bean X Y互相依赖,且都是单例的,X开始生命周期后直到X通过构造器以及创建对象后,会有一个暴露阶段,此时会将X的一个ObiectFcatory对象暴露出去并存入二级缓存中。然后会进行X的属性注入,这是会将Y注入,但是还没有Y,然后进入到Y bean的生命周期。一直到Y暴露出自己的ObjectFcatory对象暴露出去并存入二级缓存中后,Y进行依赖注入,需要注入X,然后二级缓存中有X的一个对应的工厂对象。至此完成了循环依赖。需要注意的是此过程仅适用于由于属性注入引起的循环依赖,对于由于构造器注入引起的循环依赖不能解决,原因是ObiectFcatory对象是在根据构造器通过反射创建对象后才产生的。对于构造器注入引起的循环依赖无法起作用。

2021-09-05 20:27:32 回复(0)

文章部分来自互联网,侵权联系删除
www.qklbishe.com

区块链毕设网(www.qklbishe.com)全网最靠谱的原创区块链毕设代做网站
部分资料来自网络,侵权联系删除!
资源收费仅为搬运整理打赏费用,用户自愿支付 !
qklbishe.com区块链毕设代做网专注|以太坊fabric-计算机|java|毕业设计|代做平台 » 请你说说Spring是怎么解决循环依赖的?多例对象之间的循环依赖?单例和多例之间的循环依赖?-笔试面试资料

提供最优质的资源集合

立即查看 了解详情