From d44d8f81d4e3321b703964dab274efab9e40ca8a Mon Sep 17 00:00:00 2001 From: Guangxin Yuan <274841922@qq.com> Date: Tue, 23 Mar 2021 14:13:29 +0800 Subject: [PATCH] Update Rocket.md update --- Rocket.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Rocket.md b/Rocket.md index 14a8f93..f68d3c0 100644 --- a/Rocket.md +++ b/Rocket.md @@ -775,7 +775,7 @@ HashSet的value存的是一个static finial PRESENT = newObject()。而HashSet ### Spring如何解决循环依赖问题 -Spring使用了三级缓存解决了循环依赖的问题。在populateBean()给属性赋值阶段里面Spring会解析你的属性,并且赋值,当发现,A对象里面依赖了B,此时又会走getBean方法,但这个时候,你去缓存中是可以拿的到的。因为我们在对createBeanInstance对象创建完成以后已经放入了缓存当中,所以创建B的时候发现依赖A,直接就从缓存中去拿,此时B创建完,A也创建完,一共执行了4次。至此Bean的创建完成,最后将创建好的Bean放入单例缓存池中。 +Spring使用了三级缓存解决了循环依赖的问题。在populateBean()给属性赋值阶段里面Spring会解析你的属性,并且赋值,当发现,A对象里面依赖了B,此时又会走getBean方法,但这个时候,你去缓存中是可以拿的到的。因为我们在对createBeanInstance对象创建完成以后已经放入了缓存当中,所以创建B的时候发现依赖A,直接就从缓存中去拿,此时B创建完,A也创建完,一共执行了4次。至此Bean的创建完成,最后将创建好的Bean放入单例缓存池中。(非单例的实例作用域是不允许出现循环依赖) ### BeanFactory和ApplicationContext的区别