1.为什么循环依赖是个问题
spring 中 Bean 的创建一定是经历创建对象和依赖注入两个步骤
假设对象 Bean_A 和 Bean_B 存在循环依赖,如下图
1.Bean_A 创建的时候需要 Bean_B,就会创建Bean_B
2.Bean_B创建的时候又需要Bean_A,又去创建Bean_A
3.Bean_A发现自己创建的时候需要Bean_B, 又会去创建Bean_B
4.形成循环
2.spring如何解决的
从图上看,其实加一个缓存就可以解决了
创建Bean_A的时候,把创建中的对象加入缓存就可以了
3.上述存在的问题
AOP是在 Bean 的创建之后进行的,那么放入cache 的一定是,没有经过AOP的Bean,那么这就是问题了
4.如何解决3中的问题
其实很简单,我们把AOP对象提前暴露在 Cache 不就好了
是的,所以我们还需要引入一级缓存,这一级缓存的作用就是可以将需要AOP的对象提前生成
然后放入Cache中,至此,三大缓存合并