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

Spring Boot 2.6与Keycloak集成出现循环依赖该如何修复

循环依赖问题修复方案

该问题是Spring Boot 2.6.x默认关闭循环依赖自动处理,与Keycloak 15.x版本Spring Boot适配器的已知适配冲突导致,可通过以下任意方案解决:

方案一:快速兼容(无需修改代码)

直接在项目配置文件中开启循环依赖支持:
application.properties配置:

spring.main.allow-circular-references=true

application.yml配置:

spring:
  main:
    allow-circular-references: true

该方案适配成本最低,适合紧急上线场景。

方案二:代码结构调整(符合Spring规范,推荐)

将KeycloakConfigResolver的Bean定义和Security配置类完全拆分,同时增加依赖顺序声明:

  1. 单独创建无继承的配置类注册Resolver Bean:
@Configuration
public class KeycloakResolverConfig {
    @Bean
    public KeycloakConfigResolver keycloakConfigResolver() {
        return new KeycloakSpringBootConfigResolver();
    }
}
  1. 在Security配置类上添加@DependsOn注解强制初始化顺序:
@Configuration
@EnableWebSecurity
@DependsOn("keycloakConfigResolver")
public class KeycloakSecurityConfig extends KeycloakWebSecurityConfigurerAdapter {
    // 原有安全配置逻辑保持不变
}

方案三:依赖版本升级(长期解决方案)

Keycloak 16.0.0及以上版本已正式修复该适配问题,将Keycloak适配器BOM版本升级至16.0.0+即可直接解决问题,无需额外修改配置或代码。

注:若移除自定义Resolver后仍报错,是因为Keycloak自动配置逻辑仍会触发循环依赖,优先使用上述任一方案即可解决。

内容的提问来源于stack exchange,提问作者Cale W

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 10:57:04