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

Spring Boot 2.5.6升级至3.2.5后Swagger UI失效问题咨询

Spring Boot 3.2.5 升级后 Swagger UI 无法工作的解决方案

核心结论

升级到Spring Boot 3.x后不需要强制引入Spring Security,问题主要出在Swagger依赖的兼容性和配置细节上。

问题根源

Spring Boot 3.x基于Jakarta EE API,旧版SpringFox(Swagger2)依赖仍使用Java EE API,二者不兼容。必须替换为适配Jakarta EE的SpringDoc OpenAPI(Swagger官方推荐的替代方案)。

具体修复步骤

1. 替换依赖

移除项目中所有SpringFox相关依赖(如springfox-boot-starter、springfox-swagger2等),添加SpringDoc的starter依赖:

<!-- Maven -->
<dependency>
    <groupId>org.springdoc</groupId>
    <artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
    <version>2.2.0</version> <!-- 适配Spring Boot 3.2.x -->
</dependency>
// Gradle
implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.2.0'

2. 调整Swagger配置(可选但推荐)

原有SwaggerConfig大部分代码可复用,建议简化为Builder模式(更简洁),注意类包路径仍为io.swagger.v3.oas.models:

@Configuration
public class SwaggerConfig {

    @Value("${spring.application.name}")
    private String applicationId;

    @Value("${spring.application.description}")
    private String description;

    @Value("${spring.application.version}")
    private String version;

    @Value("${app.env}")
    private String env;

    @Bean
    public OpenAPI openAPI() {
        return new OpenAPI()
                .info(new Info()
                        .title(env + " - " + applicationId)
                        .description(description)
                        .version(version))
                .components(new Components());
    }
}

若无需自定义组件,components(new Components())可直接省略。

3. 验证访问路径

SpringDoc默认Swagger UI访问路径为:http://localhost:8080/swagger-ui/index.html(旧版SpringFox为/swagger-ui.html),如需修改路径,可在application.properties中配置:

springdoc.swagger-ui.path=/swagger-ui.html

4. 排除路径拦截(如有自定义Web配置)

若项目存在WebMvcConfigurer或其他拦截器,需放行以下路径:

  • /swagger-ui/**
  • /v3/api-docs/**
  • /swagger-resources/**

示例配置:

@Configuration
public class WebConfig implements WebMvcConfigurer {
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/swagger-ui/**")
                .addResourceLocations("classpath:/META-INF/resources/webjars/springdoc-openapi-ui/");
        registry.addResourceHandler("/v3/api-docs/**")
                .addResourceLocations("classpath:/META-INF/resources/");
    }
}

5. 检查Java版本

Spring Boot 3.x要求Java 17及以上,确保项目运行环境符合要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 12:02:03