Spring Boot 使用 SpringDoc 库的 Swagger3.0

news2024/11/16 13:28:41

Swagger 定义

Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。总体目标是使客户端和文件系统作为服务器以同样的速度来更新。文件的方法,参数和模型紧密集成到服务器端的代码,允许API来始终保持同步。Swagger 让部署管理和使用功能强大的API从未如此简单。

SpringFox 的 Swagger 库

之前在SpringBoot项目中一直使用的是SpringFox提供的Swagger库,上了下官网发现已经有接近两年没出新版本了!前几天升级了SpringBoot 2.6.x 版本,发现这个库的兼容性也越来越不好了,有的常用注解属性被废弃了居然都没提供替代!

https://search.maven.org/ 网站上可以查到它的最近一次版本发布时时间:14-Jul-2020。

图片.png

引入依赖的方式如下

<dependency>
  <groupId>io.springfox</groupId>
  <artifactId>springfox-boot-starter</artifactId>
  <version>3.0.0</version>
</dependency>

Spring5使用PATH_PATTERN_PARSER来替代原本的ANT_PATH_MATCHER。SpringBoot2.6.0开始,Spring默认路径匹配策略从ANT_PATH_MATCHER改成PATH_PATTERN_PARSER。但Swagger没有对其做兼容,因此会报空指针异常。需要修改application.yml,添加如下配置

spring:
  mvc:
    pathmatch:
      matching-strategy: ant_path_matcher

SpringDoc

后来在网上一查发现,现在大家都在用另一款Swagger库SpringDoc。官网地址为:https://springdoc.org/

架构图

SpringDoc是一款可以结合SpringBoot使用的API文档生成工具,基于OpenAPI 3,目前在Github上已有1.7K+Star,更新发版还是挺勤快的,是一款更好用的Swagger库!值得一提的是SpringDoc不仅支持Spring WebMvc项目,还可以支持Spring WebFlux项目,甚至Spring Rest和Spring Native项目,总之非常强大

依赖

https://search.maven.org/ 网站上可以查到它的最近一次版本发布时时间:16-Dec-2022。

图片.png

引入依赖的方式如下

<dependency>
    <groupId>org.springdoc</groupId>
    <artifactId>springdoc-openapi-ui</artifactId>
    <version>1.6.14</version>
</dependency>

包名

  • 2.9.x
    • io.swagger
  • 3.0.0
    • io.swagger.core.v3
    • io.swagger.v3.oas.annotations

注解

这一步是可选的,因为改动太大,故 springfox对旧版的 swagger做了兼容处理。

Swagger2 的注解命名以易用性切入,全是 Api 开头,在培养出使用者依赖注解的习惯后,Swagger 3将注解名称规范化,工程化。

swagger2OpenAPI 3注解位置
@Api@Tag(name=“接口描述”, description = “详细说明”)Controller类上
@ApiOperation@Operation(summary = “接口方法描述”, description = “详细说明”)Controller方法上
@ApiImplicitParams@ParametersController 方法上
@ApiImplicitParam@Parameter(description=“参数描述”)Controller 方法上 @Parameters 里
@ApiParam@Parameter(description=“参数描述”)Controller 方法的参数上
@ApiIgnore@Parameter(hidden = true) 或 @Operation(hidden = true) 或 @Hidden-
@ApiModel@SchemaDTO类上(Data Transfer Object)
@ApiModelProperty@SchemaDTO属性上(Data Transfer Object)

常用配置

SpringDoc还有一些常用的配置

springdoc:
  swagger-ui:
    # 修改Swagger UI路径
    path: /swagger-ui.html
    # 开启Swagger UI界面
    enabled: true
  api-docs:
    # 修改api-docs路径
    path: /v3/api-docs
    # 开启api-docs
    enabled: true
  # 配置需要生成接口文档的扫描包
  packages-to-scan: com.macro.mall.tiny.controller
  # 配置需要生成接口文档的接口路径
  paths-to-match: /brand/**,/admin/**

访问地址

  • 2.9.x
    http://localhost:8081/{context-path}/swagger-ui.html
  • 3.0.0
    http://localhost:8081/{context-path}/swagger-ui/index.html

英文单词解释

  • explicit关键字
    只能修饰只有一个参数的构造函数,或者有多个参数,但是除第一个参数外其他的参数都有默认值。它的作用是表明构造函数是显式方式显示的(当我们不希望自动类型转换的时候用。标准库好多构造函数都是explicit的)
  • implicit关键字
    与explicit对应,他表示隐式的进行数据转换(在需要隐式转换的时候用)。注:C++中不存在这个关键字,C#等编程语言中才有
  • DTO
    Data Transfer Object,即数据传输对象。用于表现层和应用层之间的数据交互 简单来说Model面向业务,我们是通过业务来定义Model的。而DTO是面向界面UI,是通过UI的需求来定义的。 通过DTO我们实现了表现层与Model之间的解耦,表现层不引用Model(个人理解,就是Java Bean)
  • Controller
    Spring Controller本身也是一个Spring Bean,只是它多提供了Web能力,只需要造类上提供 @Controller 或者 @RestController 注解即可

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/125982.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

房产管理系统平台安全性分析?

房产管理系统是数图互通公司自主研发的FMCenterV5.0平台&#xff0c;是针对中国高校房产的管理特点和管理要求&#xff0c;研发的一套标准产品&#xff1b;通过在中国100多所高校的成功实施和迭代&#xff0c;形成了一套成熟、完善、全生命周期的房屋资源管理解决方案。 以下是…

FL Studio21电脑版免费音乐编曲宿主软件下载

编曲主要考验电脑的处理器&#xff08;CPU&#xff09;性能、声卡。所以配置电脑的时候有条件的伙伴可以着重考虑这两方面。现在市面上惠普、戴尔、华为、苹果等品牌的电脑&#xff0c;在四五千这个范围的商务本&#xff0c;就可以胜任编曲工作。但是在一些较为庞大的工程中可能…

SolarMesh(微服务监管平台)安装教程

SolarMesh简介 SolarMesh是基于服务网格构建的微服务监管平台。SolarMesh基于 Istio 及容器技术&#xff0c;提供微服务流量监控和管理&#xff0c;提供完善的非侵入式服务治理解决方案&#xff0c;在提供Istio流量管理等基础能力外&#xff0c;还提供多集群纳管、监控告警、W…

为什么全球科技巨头都在布局超高清?

我们能明显地感受到&#xff0c;进入21世纪以来&#xff0c;影像视频所占用人类生活的时间、空间已达到人类诞生以来的最大值。根据《2022全球互联网现象报告》&#xff0c;2021年流媒体视频占互联网带宽流量的53.7%&#xff0c;比2020年提升了4.8%。衣食住行&#xff0c;休闲娱…

十亿人都在用的健康码,运维体系是怎么设计的?

导读&#xff5c;随着疫情防控模式的迭代&#xff0c;健康码访问DAU逐渐趋于下跌&#xff0c;意味着健康码将逐步完成历史使命&#xff0c;见证着疫情的结束。本文特邀腾讯研发工程师李雄政将从技术架构、可观测体系、运营保障体系等运维体系多方面&#xff0c;总结回顾健康码业…

骨传导耳机到底怎么样,五款好用的骨传导耳机推荐

还有很多人不知道骨传导耳机使用感受到底如何&#xff0c;骨传导耳机是开放式的听音方式&#xff0c;在使用骨传导耳机时&#xff0c;会更加安全、耳机的声音相对于入耳式的声音会更加具有空间立体感&#xff0c;具体使用感感受到底如何&#xff0c;看下文大家就有一定的了解了…

服务器ssl证书升级

最近服务器扫描出ssl证书是使用弱哈希算法签名的SSL证书(CVE-2004-2761)【原理扫描】&#xff0c;要求联系证书颁发机构重新颁发证书。使用弱哈希算法签名SSL证书的端口有1433&#xff0c;3389。所有要对这俩端口配置一个新的证书。算法且满足sha256。 下面是我我服务器证书升…

国际原子时(TAI),GPS时间,协调世界时(UTC)以及rinex文件起止时间

最近学习使用PRIDE-PPPAR处理GNSS原始数据&#xff0c;判断rinex文件是不是单天的问题实在让人费解。必应搜索了一下&#xff0c;结合手头上的软件&#xff0c;问题大致弄清楚了。 比如现在有1个rinex文件&#xff1a;GPSR0190.19O&#xff0c;如果用PRIDE-PPPAR 的命令pdp3处…

零售行业R公司对接亚马逊Amazon Device EDI项目案例

为了满足平台货物的多样性&#xff0c;亚马逊Amazon邀请了来自全球各地的优秀供应商加入其供应链体系。要管理如此庞大的供应商群体&#xff0c;需要完成大量的数据处理工作&#xff0c;位列世界500强的Amazon是如何传输这些数据的呢&#xff1f; 答案是&#xff1a;通过EDI&a…

基于Amlogic 安卓9.0, 驱动简说(三):使用misc框架,让驱动更简单

文章目录一、前文总结二、系列文章三、MISC框架驱动四、解析&#xff1a;完整源码4.1 helloworld_misc_amlogic_driver.c4.2 Makefile五、编译执行&#xff08;1&#xff09;编译及部署&#xff08;2&#xff09;运行六、应用层调用6.1 APP源码6.2 命令及运行效果七、源码下载八…

思考札记1

2022年12月26日 今天看了荣耀新出的80GT&#xff0c;主处理器是第一代骁龙8&#xff0c;以及一个辅助处理器&#xff0c;性能怎么样不知道&#xff0c;但是12256价格来到了 3299&#xff0c;主摄5400万像素&#xff0c;感觉偏贵&#xff0c;我是不会买的 可能这机子就是主打性能…

【杂谈】一个项目获得10倍学费收入,我在有三AI学以致用的故事

各位有三AI的读者朋友们大家好&#xff0c;作为一名在职AI算法工程师和有三AI的读者&#xff0c;今天和大家分享一下我和有三AI几年来结识和学习的经历&#xff0c;希望对大家有所帮助。结识有三AI2019年我刚工作时对AI理论基础和实践经验还非常不足&#xff0c;因此工作之余我…

质数距离 acwing

196. 质数距离 - AcWing题库 题意是给你一个区间[l,r]&#xff0c;相当于让你把这个区间里面所有的质数提出来&#xff0c;然后找到相邻质数距离最近和最远的第一个点在什么地方 看一下数据范围&#xff0c;不同的数据范围决定了用什么方法去做&#xff1a; 两个数据范围&…

Linux多路转接or多路复用模型

目录 一、功能 二、应用场景 三、多路转接模型的实现 1.select模型 1.1操作流程 1.2相关接口 1.3示例 1.4常见使用方式 1.5优缺点 2.poll模型 2.1操作流程 2.2相关接口 2.3示例 2.4优缺点 3.epoll模型 3.1操作流程 3.2相关接口 3.3常见使用方式 3.4epoll的事…

这一年,熬过许多夜,也有些许收获 | 2022年终总结

弹指一挥间&#xff0c;时间如白驹过隙。光阴似箭&#xff0c;日月如梭&#xff0c;时间如闪电&#xff0c;转瞬即逝。回望来时路&#xff0c;不觉潸然泪下… 一说到年终总结&#xff0c;好像都离不开这样煽情的开场白。但不可否认的是&#xff0c;时间确实过得很快&#xff0…

操作指南|通过Snapshot进行投票

Snapshot是一个去中心化的治理平台&#xff0c;包括Moonbeam社区在内的许多Web3社区都使用此平台进行民意投票。民意投票是一种非正式的链下治理流程&#xff0c;允许社区在链上投票之前就某件事发表意见。通过Snapshot进行的民意投票&#xff0c;以及在Moonbeam治理论坛上的讨…

canopen6.0-PDO发送

1、发送PDO 2、发送PDO参数说明 发送PDO标识符:180+NODEID 传输类型 0xff为跟随定时器发送 进制时间:防止某一个报文长时间占用总线设定的时间 envent timer:单位为ms,传输类型设置0xff,定时发送时间 3、发送PDO映射参数说明 PDO映射数目:PDO传输变量数量 7100 01 10h含义…

南卡和漫步者蓝牙耳机哪个好?国产蓝牙耳机南卡和漫步者360度对比评测

现如今&#xff0c;随着蓝牙技术的发展&#xff0c;越来越多的蓝牙耳机出现在我们的日常生活当中&#xff0c;国产蓝牙耳机也不遑多让&#xff0c;在制作上也更为精湛。现在的国产蓝牙耳机品牌有很多&#xff0c;但相较于一些新兴的国产品牌&#xff0c;人们更信赖一些国货老牌…

C#---第十九课:时间DateTime相关的应用 Convert.ToDateTime ParseExact TryParseExact

文章目录1.将字符串转换为标准的DateTime格式2.DateTime数据的相关应用3.ParseExact的应用4.TryParseExact的应用1.将字符串转换为标准的DateTime格式 DateTime 格式是标准的格式&#xff0c;通过这个格式可以方便转换为其他格式、日期的增减、日期的比较等 using System.Diagn…

RK3568平台开发系列讲解(设备驱动篇)等待队列

🚀返回专栏总目录 文章目录 一、等待队列头二、等待队列项三、添加/删除队列四、等待唤醒五、等待事件沉淀、分享、成长,让自己和他人都能有所收获!😄 📢当我们进程去访问设备的时候,经常需要等待有特定事件发生以后再继续往下运行,这个时候就需要在驱动里面实现当条…