ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
循环依赖其实就是循环引用,也就是两个或则两个以上的bean互相持有对方,最终形成闭环。比如A依赖于B,B依赖于C,C又依赖于A 循环依赖分类: 1. 自己依赖自己; 2. 两个对象相互依赖 3. 多个对象相互依赖 spring中出现循环依赖主要有以下场景: ![](https://img.kancloud.cn/9c/1f/9c1f364f274f293627f1f46a19df7d40_1440x591.png) 循环依赖问题: 1、构造器注入和prototype类型的field注入发生循环依赖时都无法初始化 2、field注入单例的bean时,循环依赖可以被初始化 ### 生成代理对象产生的循环依赖 这类循环依赖问题解决方法很多,主要有: 1. 使用`@Lazy`注解,延迟加载 2. 使用`@DependsOn`注解,指定加载先后关系 3. 修改文件名称,改变循环依赖类的加载顺序 ### 使用@DependsOn产生的循环依赖 这类循环依赖问题要找到`@DependsOn`注解循环依赖的地方,迫使它不循环依赖就可以解决问题