为什么Spring三级缓存解决循环依赖时用第二级缓存来保证单例?直接用第三级缓存保证单例不可以吗?二级缓存一点要有吗?
二级缓存没办法生成代理对象 或者说只是用一级和三级缓存生成的代理对象会重复
二级缓存存的是提前暴露的对象,也就是没有进行属性注入的对象。
循环依赖就是,springbeanA会先把beanA的工厂函数放在三级缓存,之后对象对象创建好之后放入二级缓存,之后进行属性注入,发现属性中依赖其他其他beanB,开始创建其他beanB,提前暴露到二级缓存,beanB进行属性注入,,spring发现要解决循环依赖,从提前二级缓存中拿到beanA,之后创建完成放入三级缓存,beanA这是拿到创建好的beanB