SpringBoot3.x最简集成SpringDoc-OpenApi

本文介绍了SpringDoc在SpringBoot3.x版本后作为Swagger替代品的优势,支持OpenAPI3、JSR-303验证和OAuth2认证,以及如何在SpringBoot项目中简单集成和使用SpringDoc生成在线文档。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

为什么使用SpringDoc

        在SpringBoot低版本时一般使用Swagger扫描接口生成Json格式的在线文档,然后通过swagger-ui将Json格式的文档以页面形式展示文档。可惜遗憾的是swagger更新到3.0.0版本(springfox)后不更新了。

        SpringBoot3.x以后需要的JDK版本最低为Java17,而Java17的包名在之前的版本中从javax更改为jakarta,导致swagger在SpringBoot3.x版本中完全无法使用,而SpringDoc不同于swagger,在SpringBoot出了3版本以后很快就兼容升级了,换句话说SpringDoc是SpringBoot全系列都支持的。

SpringDoc支持的内容

  • OpenAPI 3的标准实现
  • Spring-boot v3 (Java 17 & Jakarta EE 9)
  • JSR-303支持, 专门针对 @NotNull, @Min, @Max, and @Size.
  • Swagger-ui支持
  • OAuth2 认证流程
  • 本机镜像打包支持(GraalVM native images)

最简集成SpringDoc

文档地址

  1. 创建SpringBoot项目
  2. 引入SpringDoc依赖
<!-- 适用于webmvc的SpringDoc依赖 -->
<dependency>
  <groupId>org.springdoc</groupId>
  <artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
  <version>2.2.0</version>
</dependency>

该依赖包含swagger-ui和springdoc-openapi-starter-webmvc-api依赖,无需引入其它依赖即可生效。

  1. 创建一个测试接口,添加SpringDoc的注解以生成在线文档
package com.example.controller;

import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * 示例接口
 *
 * @author vains
 */
@RestController
@RequestMapping("/example")
@Tag(name = "示例接口", description = "提供示例内容展示SpringDoc集成效果")
public class ExampleController {

    @GetMapping("/test01")
    @Operation(summary = "无参查询接口", description = "hello")
    public String test01() {
        return "Hello Spring doc";
    }

    @GetMapping("/test02")
    @Parameter(name = "test02", description = "url参数")
    @Operation(summary = "查询参数示例", description = "原样返回入参")
    public String test02(String test02) {
        return test02;
    }

    @GetMapping("/test03/{test03}")
    @Parameter(name = "test03", description = "url参数")
    @Operation(summary = "url参数示例", description = "原样返回入参")
    public String test03(@PathVariable String test03) {
        return test03;
    }
    
}

  1. 启动项目后访问提供的接口地址

http://127.0.0.1:8080/swagger-ui/index.html

效果图如下

在线文档效果图

Springfox和SpringDoc注解对照表

官方文档

SpringfoxSpringDoc解释说明
@Api@Tag描述接口信息
@ApiIgnore@Parameter(hidden = true)@Operation(hidden = true)@Hidden隐藏字段
@ApiImplicitParam@Parameter描述单个参数
@ApiImplicitParams@Parameters描述多个参数
@ApiModel@Schema描述数据模型
@ApiModelProperty(hidden = true)@Schema(accessMode = READ_ONLY)描述属性,可隐藏
@ApiModelProperty@Schema描述属性
@ApiOperation(value = "foo", notes = "bar")@Operation(summary = "foo", description = "bar")描述接口操作,包括标题和注释
@ApiParam@Parameter描述接口方法参数
@ApiResponse(code = 404, message = "foo")@ApiResponse(responseCode = "404", description = "foo")描述接口响应信息,包括状态码和消息

附录

  1. SpringDoc官网
  2. 代码仓库:GiteeGithub
<think>好的,我现在需要帮助用户解决在Spring Boot 3集成springdoc-openapi-starter-webmvc-ui的问题。首先,用户之前的问题已经提到了他们从Swagger迁移到SpringDoc,因为Spring Boot 3不再支持SpringFox。所以,我需要确保给出的步骤适用于Spring Boot 3.x版本。 首先,我应该确认依赖的版本是否正确。用户提供的引用中提到了版本2.1.0,但可能现在有更新的版本。不过,根据SpringDoc的官方文档,对于Spring Boot 3,应该使用至少2.x版本,而2.1.0可能已经适配。不过好检查新的稳定版,比如目前新的可能是2.2.0,所以需要建议用户查看版本,但示例中使用用户提到的2.1.0以避免混淆。 接下来,添加依赖到pom.xml。用户引用的依赖包括webmvc-ui和webmvc-api,但实际上可能只需要webmvc-ui,因为starter通常已经包含必要的API依赖。需要确认是否正确,可能需要化依赖,只添加webmvc-ui。 然后是配置步骤,是否需要application.properties或application.yml的配置?通常SpringDoc会自动配置,但用户可以自定义一些参数,比如文档标题、版本等。需要提供常见的配置示例,比如设置文档信息、启用Swagger UI等。 编写Controller后,如何验证?需要说明访问的URL,比如http://localhost:8080/swagger-ui.html,或者根据配置可能有所变化。此外,可能需要提到使用@OpenAPIDefinition和@Operation等注解来增强API文档。 另外,用户可能需要示例代码,比如一个单的Controller类,带有Swagger注解,以展示如何生成文档。需要确保代码符合Spring Boot 3SpringDoc的语法,比如使用Jakarta EE的包路径(javax迁移到jakarta)。 还需要注意可能的常见问题,比如依赖冲突,或者版本不兼容。例如,Spring Boot 3使用Jakarta Servlet API,而旧版本SpringDoc可能不支持,因此必须使用兼容的版本后,生成相关问题,可能涉及如何自定义文档、安全配置、如何分组API等。确保问题与集成和配置相关,帮助用户进一步探索。 总结步骤:添加正确依赖、配置属性、编写Controller示例、验证访问,并提供常见自定义选项。同时注意版本兼容性和代码示例的正确性。</think>### Spring Boot 3 集成 springdoc-openapi-starter-webmvc-ui 配置教程 #### 1. 添加依赖 在 `pom.xml` 中添加以下依赖(**需使用适配Spring Boot 3版本**): ```xml <dependency> <groupId>org.springdoc</groupId> <artifactId>springdoc-openapi-starter-webmvc-ui</artifactId> <version>2.1.0</version> <!-- 确保版本兼容Spring Boot 3 --> </dependency> ``` > **说明**: > - `springdoc-openapi-starter-webmvc-ui` 包含UI界面和核心功能[^1] > - 无需单独引入 `webmvc-api`,`webmvc-ui` 已包含必要依赖 --- #### 2. 基础配置(可选) 在 `application.properties` 中添加自定义配置: ```properties # 启用Swagger文档 springdoc.api-docs.enabled=true # 设置文档标题和版本 springdoc.swagger-ui.path=/swagger-ui.html springdoc.swagger-ui.tagsSorter=alpha springdoc.info.title=Spring Boot 3 API文档 springdoc.info.version=1.0.0 ``` --- #### 3. 编写Controller示例 ```java import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; @RestController @Tag(name = "示例API", description = "用户管理接口") public class DemoController { @GetMapping("/hello") @Operation(summary = "测试接口", description = "返回欢迎信息") public String hello() { return "Hello SpringDoc!"; } } ``` > **注解说明**: > - `@Tag` 定义API模块分类 > - `@Operation` 描述接口功能 --- #### 4. 验证访问 启动应用后访问以下URL: - **API文档JSON**:`http://localhost:8080/v3/api-docs` - **Swagger UI界面**:`http://localhost:8080/swagger-ui.html` --- #### 5. 高级配置(可选) 通过Java Config自定义OpenAPI信息: ```java import io.swagger.v3.oas.models.OpenAPI; import io.swagger.v3.oas.models.info.Info; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class OpenApiConfig { @Bean public OpenAPI customOpenAPI() { return new OpenAPI() .info(new Info() .title("Spring Boot 3 API") .version("2.0") .description("集成SpringDoc示例")); } } ``` --- ### 注意事项 1. **版本兼容性**:Spring Boot 3.x需使用SpringDoc 2.x版本 2. **注解迁移**:原Swagger注解(如`@Api`)需替换为SpringDoc的`@Tag`、`@Operation` 3. **安全拦截**:若项目配置了安全拦截,需放行以下路径: ```properties spring.security.ignored=/swagger-ui/**,/v3/api-docs/**,/webjars/** ```
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天玺-vains

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值