You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Bean循环依赖问题:我的错误分析是否正确?

关于Spring循环依赖错误的分析验证

问题背景

  • 本周刚学习Java Spring,编写了两个版本的代码:
    • 版本1:包含Mello类、标注@Configuration的Hello配置类及Main类,运行时触发循环依赖错误
    • 版本2:移除Mello类后无报错
  • 自我分析:当Spring识别到name Bean时,创建Hello对象时发现依赖Mello Bean,查找创建逻辑时又回到name方法,导致重复调用形成循环

你的分析是正确的

这种情况属于Spring配置类中的方法间循环依赖,具体逻辑如下:

  1. Spring初始化容器时,会将@Configuration类中标注@Bean的方法视为Bean的创建逻辑
  2. 若Hello配置类里,创建Hello Bean的方法依赖Mello Bean,而创建Mello Bean的方法又间接依赖回Hello Bean(或通过name方法形成闭环),就会触发循环
  3. Spring默认会用CGLIB代理@Configuration类来保证Bean的单例性,当方法间出现循环调用时,代理逻辑无法打破这个闭环,最终抛出循环依赖异常

举个贴合你场景的代码示例(还原可能的写法):

@Configuration
public class Hello {
    @Bean
    public Hello hello() {
        return new Hello(mello());
    }

    @Bean
    public Mello mello() {
        return new Mello(name());
    }

    @Bean
    public String name() {
        return "test";
    }
}

这里hello()调用mello(),mello()调用name(),如果Hello类的构造或内部逻辑又依赖name对应的Bean,就会形成循环调用链——和你分析的逻辑完全吻合。

内容的提问来源于stack exchange,提问作者Agrudge Amicus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 10:05:56