当前位置: 首页 > news >正文

SpringBoot 接口文档自动生成:SpringDoc + OpenAPI 3.0

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

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添加,无需其他依赖

1 2<dependency> 3<groupId>org.springdocgroupId> 4<artifactId>springdoc-openapi-uiartifactId> 5<version>1.7.0version> 6dependency>

SpringBoot 3.x 用这个:

1<dependency> 2<groupId>org.springdocgroupId> 3<artifactId>springdoc-openapi-starter-webmvc-uiartifactId> 4<version>2.2.0version> 5dependency>

三、启动

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

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

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

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

  • 自动扫描所有 Controller

  • 自动解析参数、返回值

  • 在线发送请求调试

  • 自动展示实体类字段


四、相关配置

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

1importio.swagger.v3.oas.models.OpenAPI; 2importio.swagger.v3.oas.models.info.Contact; 3importio.swagger.v3.oas.models.info.Info; 4importorg.springframework.context.annotation.Bean; 5importorg.springframework.context.annotation.Configuration; 6 7@Configuration 8publicclassSpringDocConfig{ 9 10@Bean 11publicOpenAPIspringShopOpenAPI(){ 12returnnewOpenAPI() 13.info(newInfo() 14.title("SpringBoot 实战项目 API 文档") 15.description("接口文档自动生成 | 在线调试") 16.version("v1.0.0") 17.contact(newContact() 18.name("后端开发") 19.email("developer@demo.com") 20) 21); 22} 23}

五、常用注解

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

1. 控制层注解

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

2. 实体/参数注解

1importio.swagger.v3.oas.annotations.media.Schema; 2 3@Data 4@Schema(description ="用户信息实体") 5publicclassUser{ 6 7@Schema(description ="用户ID", example ="1001") 8privateInteger id; 9 10@Schema(description ="用户名", example ="zhangsan") 11privateString username; 12}

3. 隐藏接口

1@Operation(hidden =true) 2@GetMapping("/test") 3publicStringtest(){ 4return"test"; 5}

六、application.yml 增强配置

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

生产环境务必关闭文档

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

七、带 Token 权限的接口调试

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

1@Bean 2publicOpenAPIopenAPI(){ 3returnnewOpenAPI() 4.info(newInfo() 5.title("API文档") 6.version("v1.0") 7) 8// 添加全局Token请求头 9.components(newComponents() 10.addSecuritySchemes("token", 11newSecurityScheme() 12.type(SecurityScheme.Type.APIKEY) 13.in(SecurityScheme.In.HEADER) 14.name("token") 15) 16); 17}

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


八、接口文档效果

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

你会看到:

  • 模块分组清晰

  • 接口说明完整

  • 参数自动解析

  • 支持在线调试

  • 返回结构自动展示(Result)


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


http://www.jsqmd.com/news/553434/

相关文章:

  • FastAPI + LLM流式响应落地全链路(2024最新生产验证版):异步上下文管理、取消传播、Token级流控与错误恢复机制大揭秘
  • 从零封装Vue版JSMpeg播放器:支持截图/录制/旋转的直播流组件开发指南
  • 2026年知名的衣柜配件挂衣杆/高定挂衣杆/铝合金挂衣杆专业制造厂家推荐 - 行业平台推荐
  • 遥感影像分类准确率总上不去?(PyTorch+Earth Engine+Sklearn融合建模的4层优化策略)
  • 张量形状对齐失效导致300%延迟激增?深度解析stride、contiguous与memory layout的隐性战争
  • OpenClaw技能开发入门:为Qwen3.5-9B定制Excel处理模块
  • 基于PCA-BP神经网络的多元回归预测Matlab代码:特征贡献率可视化与一键出图功能实现
  • GetQzonehistory:你的QQ空间数字记忆守护者终极指南
  • 2026年评价高的线材皮膜剂/冷镦成型皮膜剂实力厂家如何选 - 行业平台推荐
  • Chrome开发者工具高级用法
  • Qwen3-VL-4B Pro升级指南:从轻量版到4B Pro,体验更强的视觉推理能力
  • Qwen2.5-7B-Instruct入门指南:7B模型对输入token长度的鲁棒性压力测试
  • StructBERT文本相似度模型惊艳案例:中文电商SKU描述标准化
  • Ubuntu 22.04 安装 ROS2 Humble:从官方流程到疑难排解的完整指南
  • Bili2text:让B站视频内容价值倍增的智能转写工具
  • 开源扩展开发指南:构建个性化Notion工作空间
  • Go 泛型接口使用场景
  • Nanobot快速部署OpenClaw:Node.js环境配置与实战
  • ElasticSearch文档更新避坑指南:为什么你的部分更新会丢失字段?
  • 零代码玩转LingBot-Depth:Gradio界面一键测试,效果直观可见
  • 振动筛领域2026年热门厂商盘点,选型不迷茫,可靠的振动筛企业选哪家优选品牌推荐与解析 - 品牌推荐师
  • Z-Image Turbo提示词调试技巧:从失败案例反推有效表达逻辑
  • 智能定位系统:企业级应用中的号码解析效率提升方案
  • 2026年口碑好的铁路道口远程控制/铁路道口自动报警设备/无人看守铁路道口报警/铁路道口视频预警系统源头工厂推荐 - 行业平台推荐
  • mxbai-embed-large-v1新手入门:5分钟搞定文本向量化,小白也能玩转AI语义分析
  • 告别复杂配置!Qwen2.5-7B-Instruct一键部署,小白也能轻松上手
  • GLM-4.7-Flash入门实战:通过Ollama体验轻量级AI模型的强大能力
  • 2026年口碑好的全自动超声波清洗设备/高压喷淋超声波清洗设备优质供应商推荐 - 行业平台推荐
  • OpenClaw飞书机器人实战:GLM-4.7-Flash智能问答系统搭建
  • Qwen3-1.7B代码生成体验:实测它写Python和JavaScript代码的能力