Spring循环依赖

Bean的生命周期

Aservicece:
1、calss — beanDefinition

2、new Aservicece() 通过反射或者工厂去实例话一个对象,我们称为原始对象 // 原始对象—Aop–代理对象—放入到我们的Map中去

3、属性填充—填充Bservice bservice属性----->从单例池中找到bservice对应那个bean的对象—不能找到—>从Map中去找—创建Bservice

4、初始化

5、初始化后 执行BeanPostProcessor,进行Aop

Bservicece:
1、calss — beanDefinition

2、new Aservicece() 通过反射或者工厂去实例话一个对象,我们称为原始对象

3、属性填充—填充Aservice aservice属性

4、初始化

5、初始化后 执行BeanPostProcessor,进行Aop

真正的循环依赖:
当Aservice在创建的时候依赖Bservices && Bservice在创建的时候也依赖Aservice && 发现Aservice还正在创建中,那么此时才算是真正的出现了循环依赖。

1、出现循环依赖的主要原因:
①: Spring的生命周期太长了
②:Spring要在初始化后进行Aop.这两个原因是导致循环依赖出现的根本原因。

针对第一种原因解决方案:
   使用一个Map就能解决
第二种场景的模拟:   
    正常我们Aop是在第五步,也就是初始化后开始会调用我们的BeanPostProcessor执行后置处理器,进行Aop.
        但是如果这样做就会出现问题:
         我们在BService中给aservices属性赋值的时候&#
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值