SpringBoot使用SpringDoc+OpenAPI3.0实现接口文档自动生成

 更新时间:2026年03月31日 09:32:15   作者:希望永不加班  
本文介绍了在前后端分离项目中使用SpringDoc实现接口文档自动生成的方法,包括核心依赖、启动配置、常用注解、生产环境配置、带Token权限接口调试等内容,提高了接口文档的生成效率和维护性,需要的朋友可以参考下

在前后端分离项目中,接口文档是刚需。
传统手写文档效率低、更新不及时、容易和代码不一致,沟通成本极高。

SpringBoot 官方早已放弃旧版 SpringFox(Swagger2),转而推荐更轻量、更强大的 SpringDoc + OpenAPI 3.0

今天我们来实现接口文档自动生成、在线调试、权限配置、分组管理、生产环境关闭

一、为什么选 SpringDoc,而不是 Swagger2?

  1. 支持 OpenAPI 3.0 规范
    (最新行业标准)
  2. 兼容 SpringBoot 2.6x / 2.7x / 3.x
    (Swagger不兼容高版本Boot)
  3. 无侵入、零配置,不污染业务代码
  4. 性能更好、体积更小
  5. 支持 SpringBoot 官方推荐
  6. UI 更美观、调试更方便

二、核心依赖

直接在 pom.xml 添加,无需其他依赖

<dependency>
<groupId>org.springdocgroupId>
<artifactId>springdoc-openapi-uiartifactId>
<version>1.7.0version>
<dependency>

SpringBoot 3.x 用这个:

<dependency>
<groupId>org.springdocgroupId>
<artifactId>springdoc-openapi-starter-webmvc-uiartifactId>
<version>2.2.0version>
<dependency>

三、启动

引入依赖后,什么都不用配!

直接启动项目,访问地址:

http://localhost:8080/swagger-ui.html

就能看到全自动生成的接口文档,支持:

  • 自动扫描所有 Controller
  • 自动解析参数、返回值
  • 在线发送请求调试
  • 自动展示实体类字段

四、相关配置

创建配置类 SpringDocConfig.java,定义文档标题、描述、版本、作者:

importio.swagger.v3.oas.models.OpenAPI;
importio.swagger.v3.oas.models.info.Contact;
importio.swagger.v3.oas.models.info.Info;
importorg.springframework.context.annotation.Bean;
importorg.springframework.context.annotation.Configuration;
@Configuration
publicclassSpringDocConfig{
@Bean
publicOpenAPIspringShopOpenAPI(){
returnnewOpenAPI()
info(newInfo()
title("SpringBoot 实战项目 API 文档")
description("接口文档自动生成 | 在线调试")
version("v1.0.0")
name("后端开发")
email("developer@demo.com")
)
);
}
}

五、常用注解

SpringDoc 使用 OpenAPI 3 注解,比 Swagger 更简洁。

1. 控制层注解

importio.swagger.v3.oas.annotations.Operation;
importio.swagger.v3.oas.annotations.tags.Tag;
@RestController
@RequestMapping("/user")
@Tag(name ="用户管理模块", description ="用户增删改查接口")
publicclassUserController{
@Operation(summary ="根据ID查询用户", description ="传入用户ID,返回用户详情")
@GetMapping("/{id}")
publicResult<User>getUserById(@PathVariableInteger id){
returnResult.success();
}
}

2. 实体/参数注解

importio.swagger.v3.oas.annotations.media.Schema;
@Data
@Schema(description ="用户信息实体")
publicclassUser{
@Schema(description ="用户ID", example ="1001")
privateInteger id;
@Schema(description ="用户名", example ="zhangsan")
privateString username;
}

3. 隐藏接口

@Operation(hidden =true)
@GetMapping("/test")
publicStringtest(){
return"test";
}

六、application.yml 增强配置

springdoc:
  api-docs:
enabled:true# 是否开启接口文档(生产设为false)
path: /v3/api-docs  # 文档JSON地址
  swagger-ui:
enabled:true# 是否开启UI页面
path: /swagger-ui.html  # 访问路径
tags-sorter: alpha  # 按字母排序
operations-sorter: alpha  # 接口排序
packages-to-scan: com.demo.controller  # 只扫描Controller包

✅ 生产环境务必关闭文档

springdoc.api-docs.enabled=false
springdoc.swagger-ui.enabled=false

七、带 Token 权限的接口调试

如果项目有登录认证(Token/JWT),配置文档自动带请求头:

@Bean
publicOpenAPIopenAPI(){
returnnewOpenAPI()
.info(newInfo()
title("API文档")
version("v1.0")
)
// 添加全局Token请求头
components(newComponents()
addSecuritySchemes("token",
newSecurityScheme()
type(SecurityScheme.Type.APIKEY)
in(SecurityScheme.In.HEADER)
name("token")
)
);
}

页面上直接输入 Token,所有接口自动携带。

八、接口文档效果

访问:http://localhost:8080/swagger-ui.html

你会看到:

  • 模块分组清晰
  • 接口说明完整
  • 参数自动解析
  • 支持在线调试
  • 返回结构自动展示(Result)

学会 SpringDoc,你再也不用手写接口文档,前后端对接效率直接翻倍!

以上就是SpringBoot使用SpringDoc+OpenAPI3.0实现接口文档自动生成的详细内容,更多关于SpringBoot接口文档自动生成的资料请关注脚本之家其它相关文章!

相关文章

  • Java Socket编程心跳包创建实例解析

    Java Socket编程心跳包创建实例解析

    这篇文章主要介绍了Java Socket编程心跳包创建实例解析,具有一定借鉴价值,需要的朋友可以参考下
    2017-12-12
  • RxJava的消息发送和线程切换实现原理

    RxJava的消息发送和线程切换实现原理

    这篇文章主要介绍了RxJava的消息发送和线程切换实现原理,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-11-11
  • SpringBoot结合Neo4j自定义cypherSql的方法

    SpringBoot结合Neo4j自定义cypherSql的方法

    这篇文章主要介绍了SpringBoot结合Neo4j自定义cypherSql,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-11-11
  • SpringBoot 使用 Maven 打包方式

    SpringBoot 使用 Maven 打包方式

    maven打包有三种方式 pom、jar、war,本篇文章给大家介绍SpringBoot 使用 Maven 打包方式,结合实例代码给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧
    2023-10-10
  • 使用MyBatis拦截器实现SQL的完整打印

    使用MyBatis拦截器实现SQL的完整打印

    当我们使用Mybatis结合Mybatis-plus进行开发时,为了查看执行sql的信息通常我们可以通过属性配置的方式打印出执行的sql语句,但这样的打印出了sql语句常带有占位符信息,不利于排错,所以本文介绍了构建MyBatis拦截器,实现SQL的完整打印,需要的朋友可以参考下
    2024-07-07
  • 详细了解JAVA NIO之Buffer(缓冲区)

    详细了解JAVA NIO之Buffer(缓冲区)

    这篇文章主要介绍了JAVA NIO之Buffer(缓冲区)的相关资料,文中讲解非常细致,帮助大家更好的学习JAVA NIO,感兴趣的朋友可以了解下
    2020-07-07
  • java实现文件打包压缩输出到浏览器下载

    java实现文件打包压缩输出到浏览器下载

    这篇文章主要介绍了java实现文件打包压缩输出到浏览器下载,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-11-11
  • Mybatis 一对多和多对一关联查询问题

    Mybatis 一对多和多对一关联查询问题

    这篇文章主要介绍了Mybatis 一对多和多对一关联查询问题,需要的朋友可以参考下
    2017-04-04
  • Java实现从数据库导出大量数据记录并保存到文件的方法

    Java实现从数据库导出大量数据记录并保存到文件的方法

    这篇文章主要介绍了Java实现从数据库导出大量数据记录并保存到文件的方法,涉及Java针对数据库的读取及文件写入等操作技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-11-11
  • HttpServletRequest对象简介_动力节点Java学院整理

    HttpServletRequest对象简介_动力节点Java学院整理

    这篇文章主要为大家详细介绍了HttpServletRequest对象简介的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-07-07

最新评论