spring 循环依赖问题

今天我们来聊聊循环依赖问题

  • 循环依赖是什么
    循环依赖指的是两个或者两个以上的对象互相依赖,就好比如A对象需要依赖B对象,B对象又依赖A对象所导致的问题。如图
    在这里插入图片描述
    循环依赖分为两种:
  • 构造器依赖(无法解决)
  • 属性依赖(可以解决)
    既然构造器依赖无法解决,那我们来聊聊属性依赖,直接上图
    (画图技术太菜,自己都看不太懂,害)在这里插入图片描述
    文字说明:
    现在有A、B两个对象互相依赖,我们看看属性注入是如何利用三级缓存来解决的。
  1. 首先初始化A对象,此时还未注入属性,把A对象工厂存入三级缓存
  2. 对A对象进行属性填充,由于A的属性是B对象,此时B对象还没有创建
  3. 创建B对象,把B对象工厂存入三级缓存
  4. 对B对象进行属性填充,由于B的属性是A对象
  5. 从三级缓存中获取A对象工厂,有则用A对象工厂生产A对象,并放入二级缓存中,删除三级缓存的A对象工厂,进行B对象的属性填充
  6. B对象属性填充完成则是一个完整的对象,放入一级缓存,删除三级缓存的B对象
  7. B对象创建完成返回填充A对象,A对象填充完成后是一个完整的对象放入一级缓存中,把二级缓存的早期对象删除,到这里A和B对象都创建完成。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值