ABean创建–>依赖了B属性–>触发BBean创建—>B依赖了A属性—>需要ABean(但ABean还在创建过程中)
简单来说,两级缓存就能解决一般的依赖问题
A在堆上,一开始B中的属性指向A(原始的),后面A变成完整的了,因此b当中的A变完整。
AOP可以提前进行,他只是实现了一个BeanPostProcessor接口罢了。
AOP通过一个BeanPostProcessor来实现.
可能出现b依赖的A,经过aop之后变成了另外一个A
这个lambda表达式执行的结果可能是代理对象(出现了(通过creatingSet这个Set集合来记录当前正在创建的bean来判断是否存在循环依赖)循环依赖的情况才会提前AOP,否者就按照正常的流程第5步在执行),也可能是原始对象,之后放入2级缓存。
提前进行AOP后,到第5步再次进行AOP时会判断是否已经进行了AOP。–去进行正常bean的流程