Spring之Bean的循环依赖
2023-02-21 21:01:21 0 举报
Spring之Bean的循环依赖
作者其他创作
大纲/内容
判断A是否创建过代理创建过则使用代理A替换原生A
把B的工厂放入三级缓存中
初始化原生B
属性注入代理A
把三级缓存中A工厂删除,生成代理A,放入二级缓存中
如果需要代理工厂生成的就是代理对象如果不需要代理获取的就是原始对象
如果不需要AOP则没有这一步
删除B的创建标识
一级缓存:singletonFactories-缓存经过了完整生命周期的bean二级缓存:earlySingletonObjects-缓存未经过完整生命周期的bean或代理bean三级缓存:singletonFactories-缓存的是一个ObjectFactory其他缓存:singletonsCurrentlyInCreation-用来标记是否正在创建中earlyProxyReferences-它用来记录某个原始对象是否进行过AOP
把A的工厂放入三级缓存
标记B为创建中
标记A为创建中
初始化原生A
属性注入代理B
把代理对象A放入一级缓存删除二级和三级缓存
删除A的创建标识
判断B是否创建过代理没有创建过则使用AOP创建代理B
把代理对象B放入一级缓存删除二级和三级缓存
实例化原生B
实例化原生A
0 条评论
下一页