spring解决循环依赖的问题
Spring解决循环依赖的问题主要依赖于其三级缓存机制。
1. Spring在初始化一个bean时,如果发现需要依赖另一个bean,会先暂停当前bean的初始化,去创建依赖的bean实例。此时,生成bean的工厂会被放在三级缓存中,标记为“创建中”。
2. 当创建依赖的bean时,如果发现也需要注入当前bean的依赖,就会遍历三级缓存,最后在第三级缓存中找到当前bean的工厂,提前生成当前bean的aop代理,存入二级缓存,同时移除三级缓存。
3. 然后,依赖的bean的初始化完成后,再回到当前bean的初始化,最终完成当前bean的初始化。
需要注意的是,这种三级缓存机制并不能解决所有类型的循环依赖问题,例如构造函数引起的循环依赖。对于这种情况,Spring并没有提供直接的解决方案,而是需要开发者自己解决,例如尽量不使用构造函数依赖对象,或者破坏循环,或者破坏创建顺序。
郑重声明:图文由自媒体作者发布,我们尊重原作版权,但因数量庞大无法逐一核实,图片与文字所有方如有疑问可与我们联系,核实后我们将予以删除。
爱数码 广州云媒派信息技术有限公司 版权所有 粤ICP备2021127029号 关于爱数码