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

Spring Boot 2.0集成Swagger出现404错误,求解决方案

解决Spring Boot 2.0.1集成Swagger 2.8.0出现404的问题

我之前也碰到过几乎一模一样的情况,结合Spring Boot 2.x的特性和Springfox的配置要点,给你几个可行的解决方案:

1. 手动配置Swagger静态资源映射

Spring Boot 2.x对静态资源的处理逻辑有调整,Swagger UI的静态文件默认不会自动适配你自定义的context-path,需要手动添加资源映射规则:

创建一个WebMvc配置类,添加Swagger相关资源的映射:

@Configuration
public class SwaggerResourceConfig implements WebMvcConfigurer {
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        // 映射Swagger UI的核心HTML文件
        registry.addResourceHandler("/swagger-ui.html")
                .addResourceLocations("classpath:/META-INF/resources/");
        
        // 映射Swagger UI依赖的webjar静态资源
        registry.addResourceHandler("/webjars/**")
                .addResourceLocations("classpath:/META-INF/resources/webjars/");
    }
}

2. 调整Swagger Docket的路径映射

因为你设置了server.servlet.contextPath=/cat-service,需要在Swagger的Docket配置中明确指定路径映射,确保生成的API文档路径和实际请求路径匹配:

修改你的SwaggerConfig:

@Configuration
@EnableSwagger2
public class SwaggerConfig {
    @Bean
    public Docket api() {
        return new Docket(DocumentationType.SWAGGER_2)
                .select()
                // 建议指定你的Controller所在包,避免扫描无关类(比any()更精准)
                .apis(RequestHandlerSelectors.basePackage("com.yourproject.controller"))
                .paths(PathSelectors.any())
                .build()
                // 绑定你的项目context-path
                .pathMapping("/cat-service");
    }
}

3. 修正访问路径

你之前的API文档路径多了一层冗余的/api,正确的访问路径应该是:

  • API文档:http://localhost:8080/cat-service/v2/api-docs
  • Swagger UI页面:http://localhost:8080/cat-service/swagger-ui.html

4. 升级Springfox版本(可选优化)

Springfox 2.8.0对Spring Boot 2.0.x的支持存在一些小兼容性问题,你可以尝试升级到更稳定的2.9.2版本,修改pom.xml中的依赖:

<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger2</artifactId>
    <version>2.9.2</version>
</dependency>
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger-ui</artifactId>
    <version>2.9.2</version>
</dependency>

5. 检查启动类的包扫描范围

确保你的SwaggerConfig和SwaggerResourceConfig在Spring Boot启动类的扫描范围内(比如和启动类同包或子包),如果不在,需要在启动类上添加@ComponentScan(basePackages = {"com.yourproject.config", "com.yourproject.controller"})指定扫描路径。

另外提一句:你配置文件里的management.server.servlet.context-path是用于Spring Boot Actuator监控的,和Swagger无关,不需要为了Swagger调整它。

按照以上步骤调整后,应该就能正常访问Swagger的页面和API文档了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:41:15