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

SpringBoot 3中SpringDoc配置类循环依赖问题解决求助

SpringDoc配置类循环依赖问题解决方法

问题原因

你的配置代码存在自循环依赖:自定义SpringDocConfigProperties和SwaggerUiConfigProperties Bean时,每个@Bean方法都将自身要创建的Bean类型作为参数。Spring初始化时会发现:要创建springDocConfig Bean,需要先注入SpringDocConfigProperties实例,但这个实例正是当前方法要生成的,形成了Bean自己依赖自己的死循环,即使开启循环依赖配置也无法破解。

解决方案

方案1:直接创建Bean实例(不依赖注入参数)

修改配置类,手动创建目标Bean的实例并设置属性,避免方法参数依赖自身要创建的Bean:

private static final String SWAGGER_CONFIG = "/v3/api-docs/swagger-config";
private static final String SWAGGER_URL = "/v3/api-docs";
private static final List<String> CONTROLLER_PACKAGES =
        List.of("com.example.desafiobackvotos.controller");

@Bean
@Primary
public SpringDocConfigProperties springDocConfig(){
    SpringDocConfigProperties config = new SpringDocConfigProperties();
    config.setPackagesToScan(CONTROLLER_PACKAGES);
    return config;
}

@Bean
@Primary
public SwaggerUiConfigProperties swaggerUiConfig(){
    SwaggerUiConfigProperties config = new SwaggerUiConfigProperties();
    config.setConfigUrl(SWAGGER_CONFIG);
    config.setUrl(SWAGGER_URL);
    return config;
}

方案2:注入已有Bean并修改属性(推荐)

利用SpringDoc自动配置的Bean,通过@Autowired注入后修改属性,无需手动创建新Bean:

@Configuration
public class SpringDocConfig {
    private static final String SWAGGER_CONFIG = "/v3/api-docs/swagger-config";
    private static final String SWAGGER_URL = "/v3/api-docs";
    private static final List<String> CONTROLLER_PACKAGES =
            List.of("com.example.desafiobackvotos.controller");

    @Autowired
    public void configureSpringDoc(SpringDocConfigProperties config) {
        config.setPackagesToScan(CONTROLLER_PACKAGES);
    }

    @Autowired
    public void configureSwaggerUi(SwaggerUiConfigProperties config) {
        config.setConfigUrl(SWAGGER_CONFIG);
        config.setUrl(SWAGGER_URL);
    }
}

方案3:配置文件直接设置(最简洁)

完全不需要编写配置类,直接在application.yml或application.properties中配置SpringDoc属性:

springdoc:
  packages-to-scan: com.example.desafiobackvotos.controller
  swagger-ui:
    config-url: /v3/api-docs/swagger-config
    url: /v3/api-docs

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 10:24:52