![](https://img.haomeiwen.com/i24360436/a2822541bdd0623d.png)
什么是循环依赖:
概念:多个bean之间相互依赖,形成了一个闭环。比如:A依赖于B,B依赖于C,C依赖于A。
下图为spring官网对循环依赖的说明:
![](https://img.haomeiwen.com/i24360436/95a057b6cfd63f4c.png)
![](https://img.haomeiwen.com/i24360436/14f8f7d3d314653d.png)
构造器循环依赖是无法解决的。
解决循环依赖:
解决A,B循环依赖的问题,只要A的注入方式是setter注入并且为Singleton,就不会有循环依赖的问题。
spring内部通过3级缓存来解决循环依赖的(DefaultSingletonBeanRegistry):
![](https://img.haomeiwen.com/i24360436/1cbf01bb473e9f65.png)
![](https://img.haomeiwen.com/i24360436/5a7537421427d019.png)
![](https://img.haomeiwen.com/i24360436/e9aee0df5f8a95cc.png)
A,B两个对象在缓存中的迁移过程:
![](https://img.haomeiwen.com/i24360436/e7524cbf4b3b71d7.png)
什么是循环依赖:
概念:多个bean之间相互依赖,形成了一个闭环。比如:A依赖于B,B依赖于C,C依赖于A。
下图为spring官网对循环依赖的说明:
构造器循环依赖是无法解决的。
解决循环依赖:
解决A,B循环依赖的问题,只要A的注入方式是setter注入并且为Singleton,就不会有循环依赖的问题。
spring内部通过3级缓存来解决循环依赖的(DefaultSingletonBeanRegistry):
本文标题:spring循环依赖:
本文链接:https://www.haomeiwen.com/subject/zlattltx.html
网友评论