,相信之前有很多开发者遇到这样的问题吧,不过现在Spring底层已经通过三级缓存来解决了这个循环依赖的问题了。...然后我们往下分析
getSingleton()方法,该方法会去我们的单例池里面寻找,我们的Bean是否已经被创建了,如果被创建了则直接返回
但是我们现在还只是在初始化阶段,想都不用想都知道这里肯定是找不到的啦...解决方式:当去创建Bean A的时候,将BeanA加入到一级缓存,再去创建Bean B的时候,去检查一级缓存是否有该实例,如果有该实例,则不再去创建,是否就已经解决的循环依赖的问题呢
2.二级缓存解决防止多线程下会读取到不成熟的...Bean(分隔成熟Bean和不成熟的Bean)
详细描述:就上面的问题描述延申,如果在多线程情况下,我一个线程刚创建Bean对象A,但是还没有实例化属性B,这个时候Bean已经加入到一级缓存中去了,我另外一个线程恰好...,也去创建Bean A,发现已经创建好,直接去读取,那么这个时候去读取的Bean里的属性肯定为NULL,那这个时候读取到的Bean就是一个不完整的Bean
解决方式:通过添加二级缓存,去解决不成熟Bean