spring 中循环依赖及解决

一级缓存:存放完全初始化好的bean对象

二级缓存:仅创建了实例对象,未初始化好,没赋值的半成品对象

三级缓存:object factory通过getobject()方法可返回bean对象

用二级缓存可以解决普通对象的的循环依赖问题,但如果循环依赖的是aop增强的代理对象,代理对象是在对象初始化的最后才会生成,无法在二级缓存中获得,因此需引入三级缓存,三级缓存中是object factory,如果是代理对象,getobject就会返回增强后的代理对象

但三级缓存只能解决一般情况下的循环依赖,如果是构造函数注入,在创建实例对象时就发生了循环依赖则无法解决:

可采用@lazy注解懒加载构造方法中的依赖对象

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值