String怎么帮助我们处理循环依赖的?
三级缓存。三级缓存存的是什么样的数据?
一级缓存Map 存放完整的Bean(流程跑完的)、
二级缓存Map 存放不完整的Bean(只实例化完,还没属性赋值、初始化)、
三级缓存Map 存放一个Bean的lambda表达式(也是刚实例化完)
Bean实例化前会先查询缓存,判断Bean是否已经存在
Bean属性赋值前会先向三级缓存中放入一个lambda表达式,该表达式执行则会生成一个半成品Bean放入二级缓存
Bean初始化完成后将完整的Bean放入一级缓存,同时清空二、三级缓存