栏目分类:
子分类:
返回
文库吧用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
文库吧 > IT > 软件开发 > 后端开发 > Java

spring循环依赖

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

spring循环依赖

Spring循环依赖包含构造器循环依赖和setter方法循环依赖。

通过构造器注入构成的循环依赖是无法解决的,只能抛出beanCurentlyInCreationException异常。

Spring容易将每一个正在创建的bean标识符存放在一个当前bean的创建池中,bean标识符在创建过程中将一直保持这个这个池中,因此 如果在创建bean的过程中发现自己已经在当前创建bean池中时 ,就会抛出beanCurrentlyInCreationException异常来表示循环依赖。对于创建完成的bean将从bean创建池中删除。

对于setter方法注入的循环依赖,是通过Spring容器提前暴露刚完成构造器注入但未完成其它步骤(如setter注入)的bean来完成的。而且只能解决单例作用域的bean循环依赖。通过提前暴露一个单例工厂方法,从而使其它bean能够引用到该bean。而对于prototype范围的依赖处理,因为不缓存该作用域的bean,所以无法提前暴露一个创建中的bean;

关于三级缓存:首先尝试从singletonObjects里获取实例,如果获取不到再从earlysingletonObjects获取,如果还获取不到,在尝试从singletonfactories里获取beanname对应的objectfactory,然后调用这个objectfactory的getobject来获取bean,并放到earlysingletonobjects里,并且从singtonfactories里remove掉这个objectfactory。

 

转载请注明:文章转载自 www.wk8.com.cn
本文地址:https://www.wk8.com.cn/it/1039226.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 wk8.com.cn

ICP备案号:晋ICP备2021003244-6号