请阐述下你对spring循环依赖的理解?真的是......秃头是有原因的......
下面逐层深入了解,揭开它的神秘面纱!
在调用createBeanInstance,通过反射实例化对象后,会调用addSingletonFactory方法,将创建的早期对象存放到三级缓存中。所以关键在于三级缓存中是否存在早期对象;比如:上述场景二:均采用构造器注入,为什么不支持该场景呢?
创建beanA时,在执行createBeanInstance(beanA)方法时,此时发现beanA依赖beanB,则会去执行创建beanB流程,但是此时addSingletonFactory方法并没有执行,则三级缓存中不存在早期对象beanA,所以spring不支持“均采用构造器注入”的场景。
上述其他场景不再一一阐述。
AOP代理本质是反射,反射出来的对象每次都是不同的,如果多个对象和beanA出现循环依赖,那么只有二级缓存的话就会反射出不同的对象了。
本文链接:http://www.28at.com/showinfo-26-11891-0.html了解Spring中循环依赖流程,绝杀面试官!
声明:本网页内容旨在传播知识,不代表本站观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。