循环依赖图解:
如果发生循环依赖对象,不需要代理的话,只需要二级缓存足以解决所有问题,但是当存在代理之后就无法解决,必须要使用三级缓存来解决。
spring中对象的初始化环节:
1、填充属性
2、执行aware接口所对应的方法
3、执行beanPostProcessor中的before方法
4、执行init-method方法
5、执行beanPostProcessor中的after方法
对应三级缓存存储的object:
一级缓存:存储完整的对象(实例化和初始换完成)
二级缓存:存储半成品对象(只完成实例化的对象)
三级缓存:存储lambda表达式