三级缓存解决循环依赖问题,循环依赖是指多个 Bean 之间相互依赖,形成了一个闭环。
**一级缓存(singletonObjects):**也叫单例池,他是用来存放已经经历了完整生命周期的Bean对象 **二级缓存(earlySingletonObjects):**用于存放早期暴露出来的Bean对象或对象代理,Bean的生命周期未结束(属性未完全填充) **三级缓存(Map<String,ObjectFactory<?>>) singletonFactories ):**用于存放可以生成Bean的工厂


getBean方法,这个方法有两层含义
createBean方法,执行三个动作
AOP代理