Spring Boot 3.x 引入springdoc-openapi (内置Swagger UI、webmvc-api)
接触的原因因开发自己的项目时写接口文档很繁琐查到后端都在用swagger等接口工具来记录接口文档于是学习了一下本文记录个人配置过程有问题欢迎指正交流??SwaggerSwagger是一种Rest API的表示方式它是标准的、语言无关的工具这种表示方式不仅人可读而且机器也可读。Swagger提供了一套完整的规范来描述API接口包括请求和响应的数据模型、操作行为等。它通过注解或配置文件的方式与代码集成以生成API文档。SpringDocSpringDoc是基于OpenAPI 3规范的专为Spring Boot设计的API文档生成工具。它提供了与Spring Boot更好的集成支持Spring Boot全系列。SpringDoc利用JSR-303中的注解如NotNull、Min、Max、Size等来描述API的参数验证信息。此外SpringDoc的接口信息可以通过JSON展示也可以与Swagger-ui集成提供可视化的API文档界面。在网上看了许多教程发现很多都是针对Spring Boot 2框架的即使有针对Spring Boot 3 的用法也不太一样经过对比测试最后我使用的是SpringDoc OpenAPI Starter WebMvc UI它是 Spring Boot 项目中用于自动生成 API 文档的一个依赖库。它结合了 Swagger UI提供了一个可视化的界面来展示和测试你的 RESTful APIs。这个依赖库特别适用于使用 Spring Web MVC 框架构建的项目。这个依赖项包括了 Swagger UI 和 SpringDoc OpenAPI Starter WebMvc API无需额外引入其他依赖即可使用。pom.xml 配置我的 spring boot 版本是 3.1.8引入 springdoc 依赖记得点击右上角的带蓝色的M按钮进行依赖下载parent groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-parent/artifactId version3.1.8/version relativePath/ !-- lookup parent from repository -- /parent dependencies !-- 其他依赖 -- !-- 加入 springdoc 依赖 -- dependency groupIdorg.springdoc/groupId artifactIdspringdoc-openapi-starter-webmvc-ui/artifactId version2.5.0/version /dependency /dependencies可以在pom.xml 文件引入阿里云镜像与 dependencies 同级repositories !--阿里云镜像-- repository idalimaven/id namealiyun maven/name urlhttps://maven.aliyun.com/nexus/content/groups/public//url releases enabledtrue/enabled /releases snapshots enabledtrue/enabled /snapshots /repository /repositoriesapplication.yml 配置server: port: 5000 springdoc: api-docs: enabled: true # 开启OpenApi接口 path: /v3/api-docs # 自定义路径默认为 /v3/api-docs swagger-ui: enabled: true # 开启swagger界面依赖OpenApi需要OpenApi同时开启 path: /swagger-ui/index.html # 自定义路径默认为/swagger-ui/index.html如果需要更改这里的路径切记在拦截器配置那里对应更改后面会贴配置但是只针对我上面这个路径根据自己的需求改一下。SwaggerConfig.java 配置// 你自己的包名 package com.xxx.xxx.config; import io.swagger.v3.oas.models.ExternalDocumentation; import io.swagger.v3.oas.models.OpenAPI; import io.swagger.v3.oas.models.info.Contact; import io.swagger.v3.oas.models.info.Info; import io.swagger.v3.oas.models.info.License; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; /** * Author HHHY * ClassName * Date: 2024/4/2 14:21 * Description: Swagger 配置 */ Configuration public class SwaggerConfig { Bean public OpenAPI springShopOpenAPI() { return new OpenAPI() .info(new Info().title(Spring Boot 中使用 Swagger UI 构建 RESTful API) .contact(new Contact()) .description(百草中医药信息管理平台提供的 RESTful API) .version(v1.0.0) .license(new License().name(Apache 2.0).url(http://springdoc.org))) .externalDocs(new ExternalDocumentation() .description(外部文档) .url(https://springshop.wiki.github.org/docs)); } }若你没有设置拦截器那么到这里直接访问http://localhost:5000/swagger-ui/swagger-ui/index.html#/应该就可以跑起来了其中localhost:端口号是你自己在application里设置的。但是 当我满心欢喜的准备迎接属于自己的接口文档时蒙住了已经搞了几个小时了…于是我遍览各位大佬的帖子终于让我找到了蛛丝马迹感谢这位大佬这篇文章的最后那段话给我的启发指路——Spring Boot引入swagger-ui 后swagger-ui.html无法访问404于是我想起来自己昨天弄了一个拦截器长这样package com.ykl.springboot_tcmi.config; import com.ykl.springboot_tcmi.interceptors.LoginInterceptor; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.InterceptorRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; /** * Author HHHY * ClassName * Date: 2024/4/1 23:16 * Description: 配置类 注册拦截器 */ Configuration public class WebConfig implements WebMvcConfigurer { // 注入拦截器对象 Autowired private LoginInterceptor loginInterceptor; Override public void addInterceptors(InterceptorRegistry registry) { // 部分接口不拦截 registry.addInterceptor(loginInterceptor) .excludePathPatterns(/api/users/login, /api/users/register, /api/rights?flagfront); } }若你发现和我一样都不能访问 json 与 ui 界面那么在上述配置都正确的情况下可能是你的拦截器出了问题我是这么配置的// 前面都不变 Override public void addInterceptors(InterceptorRegistry registry) { // 部分接口不拦截 registry.addInterceptor(loginInterceptor) .excludePathPatterns(/api/users/login, /api/users/register, /api/rights?flagfront) // 【看这里】根据你自己的路径加上这个配置 .excludePathPatterns(/swagger-ui/**, /v3/api-docs/**); }配置完拦截器的东西应该就可以正常访问了我看到说还要配置什么静态资源访问目前还没写到这方面内容我也不太懂既然能跑起来就没加上能跑就行能跑就行…前端同学开心的去写接口了bushi??注意我一开始写的路径是这样的/swagger-ui/index.html, /v3/api-docs然后发现可以访问到 json的数据但是无法访问 ui 界面又是百思不得其解然后虽然很蠢但是真没想到是不能加上具体的index.html但是在看别人代码的时候灵光一闪试着改成了/swagger-ui/**结果能成了但是…是的我又傻眼了 ,因为网上版本真的很多…试了很多都不行…好不容易到这了…也不差这会儿容我再琢磨一波…作为一个未来合格的前端从业者(手动滑稽)我熟练的打开了F12果然被我找到了吧哈哈哈哈这里不仅只有/v3/api-docs发送的请求所以/v3/api-docs/**搞定具体使用这里就不说了因为我也是才接触仅仅了解就不班门弄斧了感兴趣的同学可以去看看springdoc-openapi官网或者大佬们的文章或视频学习一下??

相关新闻

公众号90w播放量,收益为啥只有 80+!

公众号90w播放量,收益为啥只有 80+!

前段时间测试爆了一篇文章阅读90w,但收益却只有87,让我们立马放弃了这个赛道。而这个赛道就是小绿书图文,小绿书爆起来首先是没有持续性,再一个收益非常低,所以我们就停掉了这个赛道。在最早的时候,一篇十万…

2026/7/6 5:31:09 阅读更多 →
浅谈连接池

浅谈连接池

浅谈连接池 数据库连接池是企业级应用必用的核心组件。 一句话理解连接池 连接池是数据库连接的"共享充电宝"系统: 没连接池:每次充电都要买新充电宝(创建连接)→ 用完扔掉(关闭连接)→ 浪费&…

2026/7/4 23:23:13 阅读更多 →
GPT-5.4 炸场发布!疯狂屠榜、超过Claude 和 Gemini

GPT-5.4 炸场发布!疯狂屠榜、超过Claude 和 Gemini

今天凌晨2点10分,OpenAI正式发布了GPT-5.4模型,已经可以在ChatGPT、API和Codex中使用了。本次共有Thingking和Pro两种模型,在性能方面超过了Claude最新的Opus 4.6和谷歌的Gemini 3.1pro。性能更强、成本更低咱们先聊聊5.4的核心技术亮点&…

2026/7/5 13:19:29 阅读更多 →

最新新闻

129、轻量化 Head 设计:用 Depthwise Conv 加 1×1 Conv 替代标准检测头卷积

129、轻量化 Head 设计:用 Depthwise Conv 加 1×1 Conv 替代标准检测头卷积

129、轻量化 Head 设计:用 Depthwise Conv 加 1乘1 Conv 替代标准检测头卷积 从一次显存爆炸说起 去年秋天调一个YOLOv11n的工业检测模型,输入分辨率压到640640,batch size设到32,结果RTX 3090直接OOM。排查半天,发现检测头三个分支的卷积层占了将近40%的参数量。当时项目…

2026/7/6 5:32:38 阅读更多 →
5分钟解放双手:League Akari - 英雄联盟玩家的本地化智能助手终极指南

5分钟解放双手:League Akari - 英雄联盟玩家的本地化智能助手终极指南

5分钟解放双手:League Akari - 英雄联盟玩家的本地化智能助手终极指南 【免费下载链接】League-Toolkit An all-in-one toolkit for LeagueClient. Gathering power 🚀. 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit 还在为游戏中…

2026/7/6 5:30:38 阅读更多 →
AI Agent 链上操作:签名之前先生成可验证计划

AI Agent 链上操作:签名之前先生成可验证计划

AI Agent 链上操作:签名之前先生成可验证计划 一、Agent 不能直接替用户签名 AI Agent 能帮用户分析资产、构造交易、调用合约、提交治理提案。但链上操作一旦签名,就具备真实资产和权限后果。让 Agent 直接决定并发起签名,是非常危险的设计。…

2026/7/6 5:28:37 阅读更多 →
League-Toolkit终极指南:英雄联盟玩家的智能助手与效率神器

League-Toolkit终极指南:英雄联盟玩家的智能助手与效率神器

League-Toolkit终极指南:英雄联盟玩家的智能助手与效率神器 【免费下载链接】League-Toolkit An all-in-one toolkit for LeagueClient. Gathering power 🚀. 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit League-Toolkit是一款基…

2026/7/6 5:28:37 阅读更多 →
3个关键设计如何让一个API征服六大音乐平台?

3个关键设计如何让一个API征服六大音乐平台?

3个关键设计如何让一个API征服六大音乐平台? 【免费下载链接】listen1-api One API for all free music in China 项目地址: https://gitcode.com/gh_mirrors/li/listen1-api 还在为音乐应用开发中对接多个平台API而头疼吗?面对网易云音乐、QQ音乐…

2026/7/6 5:26:37 阅读更多 →
AI 内容风格控制:风格一致不能牺牲事实边界

AI 内容风格控制:风格一致不能牺牲事实边界

AI 内容风格控制:风格一致不能牺牲事实边界 一、风格不是唯一目标 AI 内容生成常要求风格一致:更活泼、更专业、更像品牌语气。但如果为了风格牺牲事实边界,内容会变得危险。产品介绍、技术文档、行业报告、新闻摘要,都不能只追求…

2026/7/6 5:26:37 阅读更多 →

日新闻

H2 与 MySQL 单元测试兼容性:5 个关键 SQL 语句差异与规避方案

H2 与 MySQL 单元测试兼容性:5 个关键 SQL 语句差异与规避方案

H2与MySQL单元测试兼容性:5个关键SQL语句差异与规避方案1. 单元测试中的数据库兼容性挑战在Java开发领域,单元测试是保证代码质量的重要环节。当应用涉及数据库操作时,测试环境的搭建往往成为开发者的痛点。H2数据库因其轻量级、内存模式和快…

2026/7/6 0:01:17 阅读更多 →
Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘

Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘

Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘 【免费下载链接】rbtray A fork of RBTray from http://sourceforge.net/p/rbtray/code/. 项目地址: https://gitcode.com/gh_mirrors/rb/rbtray 你是否厌倦了Windows任务栏上密密麻麻的图标&…

2026/7/6 0:01:17 阅读更多 →
Visual C++ 运行时库一键安装终极指南:告别DLL缺失烦恼

Visual C++ 运行时库一键安装终极指南:告别DLL缺失烦恼

Visual C 运行时库一键安装终极指南:告别DLL缺失烦恼 【免费下载链接】vcredist AIO Repack for latest Microsoft Visual C Redistributable Runtimes 项目地址: https://gitcode.com/gh_mirrors/vc/vcredist 你是否曾经遇到过这样的情况:下载了…

2026/7/6 0:05:19 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/5 0:03:34 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/5 0:03:34 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/5 0:07:38 阅读更多 →

月新闻