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

Spring Boot集成Jersey时如何启用SpringDoc OpenAPI?

问题原因与解决方案

核心问题

你遇到的报错根源很明确:org.springdoc.webmvc.api.OpenApiResource是Spring MVC专属组件,不能直接注册到Jersey的ResourceConfig中。Jersey是JAX-RS规范的实现,和Spring MVC属于两套独立的Web框架,对应的SpringDoc适配组件完全不同。

解决步骤

1. 替换SpringDoc依赖

移除原有的Spring MVC版SpringDoc依赖,换成Jersey适配的版本:

<!-- 删除原WebMVC依赖 -->
<!-- <dependency>
    <groupId>org.springdoc</groupId>
    <artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
    <version>2.6.0</version>
</dependency> -->

<!-- 添加Jersey版SpringDoc依赖 -->
<dependency>
    <groupId>org.springdoc</groupId>
    <artifactId>springdoc-openapi-starter-jersey-api</artifactId>
    <version>2.6.0</version>
</dependency>
<dependency>
    <groupId>org.springdoc</groupId>
    <artifactId>springdoc-openapi-starter-jersey-ui</artifactId>
    <version>2.6.0</version>
</dependency>

版本保持和你原有的2.6.0一致,与Spring Boot 3.3.2完全兼容。

2. 修正Jersey配置类

把配置类中注册的WebMVC版OpenApiResource替换为Jersey专属的实现:

@Configuration
public class WsResourceConfig extends ResourceConfig {
    public WsResourceConfig() {
        packages("resource.packages");
        register(MultiPartFeature.class);
        // 替换为Jersey版本的OpenApiResource
        register(org.springdoc.jersey.api.OpenApiResource.class);
    }
}

3. 验证与额外配置

启动项目后,访问http://localhost:8080/swagger-ui/index.html即可正常查看OpenAPI文档。

如果你的项目同时启用了Spring MVC和Jersey(依赖了spring-boot-starter-web),建议通过配置区分两者的请求路径,避免冲突:

spring.jersey.application-path=/api

此配置会让Jersey处理/api前缀的请求,Spring MVC处理其他请求(包括Swagger UI的请求)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 14:23:13