什么是循环依赖:
概念:多个bean之间相互依赖,形成了一个闭环。比如:A依赖于B,B依赖于C,C依赖于A。
下图为spring官网对循环依赖的说明:
图片.png
图片.png
构造器循环依赖是无法解决的。
解决循环依赖:
解决A,B循环依赖的问题,只要A的注入方式是setter注入并且为Singleton,就不会有循环依赖的问题。
图片.pngspring内部通过3级缓存来解决循环依赖的(DefaultSingletonBeanRegistry):
图片.png
图片.png
A,B两个对象在缓存中的迁移过程:
图片.png
网友评论