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

升级至SDG 1.9.11.BUILD-SNAPSHOT使用QueryPostProcessor触发StackOverflowError

解决Spring Data GraphQL升级后QueryPostProcessor导致的StackOverflowError

我之前碰到过一模一样的场景,StackOverflowError在Bean初始化阶段出现,十有八九是循环依赖或者无限递归调用搞的鬼。结合你升级到1.9.11.BUILD-SNAPSHOT并启用新QueryPostProcessor特性的情况,大概率是自定义Processor的写法触发了循环依赖链。

先把你提供的异常信息整理出来:

Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'userRepository': Invocation of init method failed; nested exception is java.lang.StackOverflowError
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableB...

问题根源

1.9.11快照版本里,QueryPostProcessor的初始化时机和1.9.10正式版有差异。如果你在自定义的QueryPostProcessor中直接注入了Spring Data Repository(比如你的userRepository),就会形成死循环:
userRepository初始化 → 触发QueryPostProcessor处理 → Processor依赖userRepository → 再次触发userRepository初始化
无限递归下去直接把栈撑爆。

解决方案

针对这个问题,有几个具体的修复方向:

1. 避免在QueryPostProcessor中直接注入Repository

改用ApplicationContext延迟获取Bean,不要在构造函数或字段注入阶段直接拿Repository,而是在process方法内部动态获取:

@Component
public class CustomQueryPostProcessor implements QueryPostProcessor {

    private final ApplicationContext applicationContext;

    // 只注入ApplicationContext,不直接依赖Repository
    public CustomQueryPostProcessor(ApplicationContext applicationContext) {
        this.applicationContext = applicationContext;
    }

    @Override
    public Query process(Query query) {
        // 真正需要的时候再获取Repository实例
        UserRepository userRepository = applicationContext.getBean(UserRepository.class);
        // 你的业务处理逻辑
        return query;
    }
}

2. 调整Bean初始化顺序(备选方案)

如果业务逻辑必须依赖Repository的提前初始化,可以通过@DependsOn注解明确指定顺序,但这种方式不如第一种稳妥,仍有触发循环的风险:

@Component
@DependsOn("userRepository") // 强制让Repository先完成初始化
public class CustomQueryPostProcessor implements QueryPostProcessor {
    // ... 你的处理逻辑
}

3. 回退或等待官方修复

你用的是BUILD-SNAPSHOT开发版本,本身就存在未稳定的潜在问题。如果上面的方法都无效,可以暂时回退到1.9.10.RELEASE版本,或者关注Spring Data GraphQL的官方更新,等待快照版本修复该bug。

内容的提问来源于stack exchange,提问作者Jebuselwyn Martin

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:30:06