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

Spring Boot 3集成Swagger遇404错误,请求技术支持

Spring Boot 3 集成 Swagger 出现 404 错误排查与解决

问题情况

本人是Java新手,在Spring Boot 3项目中集成Swagger时遇到404错误,访问地址为http://localhost:8080/be/swagger-ui.html。已添加SwaggerConfig配置类,代码如下:

package com.jsqwerty.be.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

@Configuration
public class SwaggerConfig {
    @Bean
    public Docket api() {
        return new Docket(DocumentationType.SWAGGER_2)
                .select()
                .apis(RequestHandlerSelectors.any())
                .paths(PathSelectors.any())
                .build();
    }

    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                .title("API")
                .description("Service API")
                .termsOfServiceUrl("http://springfox.io")
                .contact(new Contact("springfox", "", ""))
                .license("Apache License Version 2.0")
                .licenseUrl("https://github.com/springfox/springfox/blob/master/LICENSE")
                .version("2.0")
                .build();
    }
}

pom.xml核心配置片段:

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>3.0.0</version>
    <relativePath/>
</parent>
<dependencies>
    <!-- 其他依赖省略 -->
    <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-swagger2</artifactId>
        <version>3.0.0</version>
    </dependency>
    <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-boot-starter</artifactId>
        <version>3.0.0</version>
    </dependency>
    <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-swagger-ui</artifactId>
        <version>2.9.2</version>
    </dependency>
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>3.1.0</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>javax</groupId>
        <artifactId>javaee-api</artifactId>
        <version>7.0</version>
    </dependency>
</dependencies>

核心问题分析

  1. 版本兼容冲突:Spring Boot 3基于Jakarta EE规范(包路径jakarta.*),但你使用的Springfox 3.0.0及以下版本依赖Java EE(包路径javax.*),两者不兼容,这是导致404的根本原因。
  2. 依赖冗余与版本不一致:同时引入springfox-swagger2、springfox-boot-starter,且springfox-swagger-ui版本为2.9.2,与其他Springfox版本不匹配,造成依赖混乱。
  3. 访问路径错误:Springfox 3.x的Swagger UI默认路径是/swagger-ui/index.html,而非旧版的/swagger-ui.html;若项目未配置server.servlet.context-path=/be,原访问路径也会失效。
  4. 配置类适配问题:原配置类未明确添加@EnableSwagger2注解,且Springfox的配置逻辑在Spring Boot 3下无法正常加载Bean。

解决方案

方案一:改用SpringDoc(推荐,完全兼容Spring Boot 3)

SpringDoc是Springfox的替代方案,专门适配Spring Boot 3及Jakarta EE:

  1. 替换pom.xml依赖:移除所有Springfox相关依赖,添加SpringDoc依赖:
<dependency>
    <groupId>org.springdoc</groupId>
    <artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
    <version>2.2.0</version>
</dependency>
  1. 删除SwaggerConfig.java:SpringDoc会自动完成基础配置,无需手动编写配置类(如需自定义规则,可参考SpringDoc官方文档)。
  2. 访问路径:启动项目后,若配置了server.servlet.context-path=/be,访问http://localhost:8080/be/swagger-ui/index.html;未配置则访问http://localhost:8080/swagger-ui/index.html。

方案二:强行适配Springfox(不推荐,维护成本高)

若坚持使用Springfox,需调整依赖与配置:

  1. 清理并替换依赖:移除springfox-swagger2、javax.servlet-api、javaee-api依赖,统一使用Springfox 3.0.0版本:
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-boot-starter</artifactId>
    <version>3.0.0</version>
    <exclusions>
        <exclusion>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
        </exclusion>
    </exclusions>
</dependency>
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger-ui</artifactId>
    <version>3.0.0</version>
</dependency>
  1. 修改配置类:添加@EnableSwagger2注解,并指定扫描包(避免无差别扫描):
package com.jsqwerty.be.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

@Configuration
@EnableSwagger2
public class SwaggerConfig {
    @Bean
    public Docket api() {
        return new Docket(DocumentationType.SWAGGER_2)
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.jsqwerty.be"))
                .paths(PathSelectors.any())
                .build();
    }
}
  1. 访问路径:使用http://localhost:8080/be/swagger-ui/index.html(注意路径结尾为index.html)。

额外检查点

  • 确认application.properties中是否配置了上下文路径:
server.servlet.context-path=/be

若未配置,需去掉访问路径中的/be。

  • 查看项目启动日志,确认Swagger/SpringDoc相关Bean是否成功加载,有无报错信息。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 16:55:19