SpringDoc OpenAPI 3 常用注解使用方法

 更新时间:2026年04月07日 09:13:48   作者:伯恩bourne  
本文介绍了SpringDoc/OpenAPI3在SpringBoot4+项目中的常用注解,包括@Tag、@Operation、@Parameter、@ApiResponse等核心注解,以及@Schema、@Hidden、@Parameters等实用注解的使用方法,并提供了一个完整示例,感兴趣的朋友跟随小编一起看看吧

SpringDoc / OpenAPI 3 最常用注解,适配 Spring Boot 4 + springdoc-openapi 3.x,直接复制就能用。

一、核心常用注解(必掌握)

1.@Tag

作用:给 Controller / 接口模块 打标签,用于分组显示。

@RestController
@RequestMapping("/user")
@Tag(name = "用户管理模块", description = "用户的增删改查接口")
public class UserController {
}

效果:Swagger UI 左侧会显示一个分组:用户管理模块

2.@Operation

作用:描述单个接口方法,相当于接口说明。

@Operation(
    summary = "根据ID查询用户",
    description = "传入用户ID,返回用户详细信息",
    tags = {"用户管理模块"}
)
@GetMapping("/{id}")
public User getUser(@PathVariable Long id) {
}

常用属性:

  • summary:接口简短说明
  • description:详细描述
  • tags:归属分组
  • method:请求方法(一般不用写,自动识别)
  • hidden:是否隐藏接口

3.@Parameter

作用:描述路径参数 / 查询参数

@GetMapping("/{id}")
public User getUser(
    @Parameter(description = "用户ID", required = true, example = "1001")
    @PathVariable Long id
) {
}

常用属性:

  • description:参数说明
  • required:是否必填
  • example:示例值
  • hidden:隐藏参数

4.@ApiResponse/@ApiResponses

作用:定义接口响应状态码与说明

@Operation(...)
@ApiResponses({
    @ApiResponse(responseCode = "200", description = "查询成功"),
    @ApiResponse(responseCode = "404", description = "用户不存在"),
    @ApiResponse(responseCode = "500", description = "服务器异常")
})
@GetMapping("/{id}")
public User getUser(@PathVariable Long id) {
}

二、实体类常用注解

5.@Schema

作用:描述DTO、实体类、字段的含义、示例、约束。

用在类上

@Schema(description = "用户信息实体")
public class User {
}

用在字段上

@Schema(description = "用户ID", example = "1001")
private Long id;
@Schema(description = "用户名", requiredMode = Schema.RequiredMode.REQUIRED)
private String username;

常用属性:

  • description:字段说明
  • example:示例
  • requiredMode:是否必填
  • hidden:隐藏字段
  • minLength / maxLength:长度限制
  • format:格式(password、email 等)

三、实用增强注解

6.@Hidden

作用:隐藏某个接口、类、字段,不在 Swagger 显示。

@Hidden
@GetMapping("/internal")
public void internalApi() {
}

7.@Parameters

多个参数统一包裹(不常用,一般直接每个参数加 @Parameter

8.@RequestBody搭配 OpenAPI

SpringDoc 会自动识别 @RequestBody,你只需要给 DTO 加 @Schema 即可。

四、完整示例(可直接复制)

@RestController
@RequestMapping("/user")
@Tag(name = "用户管理模块", description = "用户相关接口")
public class UserController {
    @Operation(
        summary = "根据ID查询用户",
        description = "根据用户唯一ID查询用户详情"
    )
    @ApiResponses({
        @ApiResponse(responseCode = "200", description = "成功"),
        @ApiResponse(responseCode = "404", description = "用户不存在")
    })
    @GetMapping("/{id}")
    public User getUser(
        @Parameter(description = "用户ID", required = true, example = "1001")
        @PathVariable Long id
    ) {
        return new User();
    }
}
@Schema(description = "用户信息")
public class User {
    @Schema(description = "用户ID", example = "1001")
    private Long id;
    @Schema(description = "用户名", requiredMode = Schema.RequiredMode.REQUIRED)
    private String username;
}

五、访问地址

启动后访问:

http://localhost:端口/swagger-ui.html

(注:文档部分内容由 AI 生成)

到此这篇关于SpringDoc OpenAPI 3 常用注解使用方法的文章就介绍到这了,更多相关SpringDoc OpenAPI 3 注解内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • SpringBoot排除不需要的自动配置类DataSourceAutoConfiguration问题

    SpringBoot排除不需要的自动配置类DataSourceAutoConfiguration问题

    这篇文章主要介绍了SpringBoot排除不需要的自动配置类DataSourceAutoConfiguration问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-07-07
  • 详解JNI到底是什么

    详解JNI到底是什么

    JNI是Java Native Interface的缩写,通过使用 Java本地接口书写程序,可以确保代码在不同的平台上方便移植。从Java1.1开始,JNI标准成为java平台的一部分,它允许Java代码和其他语言写的代码进行交互
    2021-06-06
  • 深入浅出Java 抽象类与接口及区别对比分析

    深入浅出Java 抽象类与接口及区别对比分析

    抽象类和接口是Java中实现多态和设计模式的重要工具,它们在编程中具有重要的地位,能够有效提高代码的灵活性和可维护性,本文给大家介绍Java抽象类与接口及区别对比分析,感兴趣的朋友跟随小编一起看看吧
    2025-11-11
  • MyBatis 结果映射的两种方式

    MyBatis 结果映射的两种方式

    本文主要介绍了MyBatis的结果映射机制,包括基本结果映射、复杂结果映射以及动态结果映射和延迟加载,通过合理配置结果映射,可以简化复杂查询结果,感兴趣的可以了解一下
    2024-11-11
  • spring项目中切面及AOP的使用方法

    spring项目中切面及AOP的使用方法

    我们知道,spring两大核心,IOC(控制反转)和AOP(切面),那为什么要使用AOP,AOP是什么呢?带着这些问题通过本文学习下吧
    2021-06-06
  • SpringBoot项目使用Liquibase数据库版本管理方式

    SpringBoot项目使用Liquibase数据库版本管理方式

    Liquibase是开源数据库版本管理工具,支持多数据库及多格式变更日志,实现变更追踪、上下文执行、文档生成等功能,需配置目录结构及master.xml文件,注意@PostConstruct初始化顺序问题,建议用CommandLineRunner替代
    2025-09-09
  • List转变为逗号分隔的String(Java7和Java8分别实现)

    List转变为逗号分隔的String(Java7和Java8分别实现)

    这篇文章主要介绍了Java7和Java8分别实现List转变为逗号分隔的String,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-06-06
  • Java多线程执行处理业务时间太久解决方法代码示例

    Java多线程执行处理业务时间太久解决方法代码示例

    这篇文章主要介绍了Java多线程执行处理业务时间太久解决方法代码示例的相关资料,具有一定借鉴价值,需要的朋友可以参考下。
    2017-12-12
  • Jenkin邮件收发实现原理及过程详解

    Jenkin邮件收发实现原理及过程详解

    这篇文章主要介绍了Jenkin邮件收发实现原理及过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-09-09
  • java 文件的操作Path、Paths、Files详解

    java 文件的操作Path、Paths、Files详解

    Java NIO(New I/O)是Java 7中引入的一项重要特性,旨在提供一种更加灵活和高效的文件处理方式,NIO.2主要通过Path、Paths和Files三个核心组件来实现对文件和目录的操作,本文给大家介绍java 文件的操作Path、Paths、Files的相关知识,感兴趣的朋友一起看看吧
    2024-10-10

最新评论