二级缓存装的是半成品bean,考虑不用第三级只用前两级的情形:a实例化,放入二级缓存,属性填充 此时发现a依赖新bean b,去做bean b的创建,b实例化,放入二级缓存,属性填充 此时发现b依赖a 去二级缓存找a 命中了 给b装配上a。 在不考虑代理的情形,这是没问题。但如果a用了aop 真正该用的是a的aop增强的代理对象,但前面的逻辑b装配上的却是原始a! 第三级缓存我理解是去存了beanName,原始bean实例以及真正所需bean对象的创建逻辑。aop的话应该是用了个beanpostprocessor