当我们在使用Spring MVC写接口的时候,为了生成API文档,为了方便整合Swagger,都是用这个SpringFox的这套封装。但是,自从2.9.2版本更新之后,就一直没有什么动静,也没有更上Spring Boot的大潮流,有一段时间还一直都是写个配置类来为项目添加文档配置的。为此,之前就造了这么个轮子:
也没什么难度,就是造的早,所以得到了不少Star。现在SpringFox出了一个starter,看了一下功能,虽然还不完美,但相较于之前我们自己的轮子来说还是好蛮多的。来看看这个版本有些什么亮点:

Spring 5,Webflux 支持(仅请求映射支持,尚不支持功能端点)
Spring Integration 支持
Spring Boot 支持 springfox-boot-starter 依赖性(零配置,自动配置支持)
具有自动完成功能的文档化配置属性
更好的规范兼容性
支持 OpenApi 3.0.3
几乎零依赖性(唯一需要的库是 spring-plugin、pswagger-core)
现有的 swagger2 注释将继续有效,并丰富 open API 3.0 规范
对于这次的更新,我觉得比较突出的几点:Webflux的支持,目前的轮子就没有做到;对OpenApi 3的支持;以及对Swagger 2的兼容(可以比较方便的做升级了)。

错误行代码:
Cause by:
Failed to start bean 'documentationPluginsBootstrapper'; nested exception is java.lang.NullPointerException
错误原因Springfox使用的路径匹配是基于AntPathMatcher的,而Spring Boot 2.6.X使用的是PathPatternMatcher
解决方案:
1.简单粗暴:升级spring-boot-starter-parent版本

 <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.5.6</version><relativePath/> <!-- lookup parent from repository --></parent>

2.高级感:在application.yaml里配置:spring.mvc.pathmatch.matching-strategy: ANT_PATH_MATCHER

spring:mvc:pathmatch:matching-strategy: ant_path_matcher

接下来进入主题:上手

第一步导入依赖

        <dependency><groupId>io.springfox</groupId><artifactId>springfox-boot-starter</artifactId><version>3.0.0</version></dependency><dependency><groupId>com.github.xiaoymin</groupId><artifactId>swagger-bootstrap-ui</artifactId><version>1.9.6</version></dependency>

第二步在主启动类开启支持

 访问http://localhost:8080/doc.html即可 默认ui就是bootstarp-ui。

可以添加自定义设置

@Configuration
@EnableSwagger2
public class Swagger2Config {@Beanpublic Docket createRestApi() {return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).select()//为当前包下的controller生成api文档.apis(RequestHandlerSelectors.any()).paths(PathSelectors.any()).build();}private ApiInfo apiInfo() {//设置文档信息return new ApiInfoBuilder().title("小7接口文档").description("小7接口文档").contact(new Contact("李佳琪", "http:localhost:8080/doc.html","1004102689@qq.com")).version("1.0").build();}
/*** 解决swagger在springboot2.7以后的空指针异常*/@Beanpublic static BeanPostProcessor springfoxHandlerProviderBeanPostProcessor() {return new BeanPostProcessor() {@Overridepublic Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {if (bean instanceof WebMvcRequestHandlerProvider || bean instanceof WebFluxRequestHandlerProvider) {customizeSpringfoxHandlerMappings(getHandlerMappings(bean));}return bean;}private <T extends RequestMappingInfoHandlerMapping> void customizeSpringfoxHandlerMappings(List<T> mappings) {List<T> copy = mappings.stream().filter(mapping -> mapping.getPatternParser() == null).toList();mappings.clear();mappings.addAll(copy);}@SuppressWarnings("unchecked")private List<RequestMappingInfoHandlerMapping> getHandlerMappings(Object bean) {try {Field field = ReflectionUtils.findField(bean.getClass(), "handlerMappings");assert field != null;field.setAccessible(true);return (List<RequestMappingInfoHandlerMapping>) field.get(bean);} catch (IllegalArgumentException | IllegalAccessException e) {throw new IllegalStateException(e);}}};}
}

springboot生成接口文档相关推荐

  1. SpringBoot 如何生成接口文档,老鸟们都这么玩的!

    为什么要用Swagger ? " 作为一名程序员,我们最讨厌两件事:1. 别人不写注释.2. 自己写注释. 而作为一名接口开发者,我们同样讨厌两件事:1. 别人不写接口文档,文档不及时更新. ...

  2. SpringBoot 整合Smart-doc生成接口文档

    之前我在SpringBoot老鸟系列中专门花了大量的篇幅详细介绍如何集成Swagger,以及如何对Swagger进行扩展让其支持接口参数分组功能.详情可见:SpringBoot 如何生成接口文档,老鸟 ...

  3. SpringBoot自动生成接口文档

    跟大家介绍一个自动生成接口文档的工具包,作者的理念是注释即文档,在写代码的时候写上注释,项目启动后就会生成接口文档,非常方便,省去了Swagger写注解的过程. 仓库地址:https://github ...

  4. 实体类 接口_spring-boot-route(五)整合Swagger生成接口文档

    目前,大多数公司都采用了前后端分离的开发模式,为了解决前后端人员的沟通问题,后端人员在开发接口的时候会选择使用swagger2来生成对应的接口文档,swagger2提供了强大的页面调试功能,这样可以有 ...

  5. SpringBoot 集成接口文档,老鸟们也被打脸了!

    之前我在SpringBoot老鸟系列中专门花了大量的篇幅详细介绍如何集成Swagger,以及如何对Swagger进行扩展让其支持接口参数分组功能.详情可见:SpringBoot 如何生成接口文档,老鸟 ...

  6. 自动生成接口文档之JApiDocs教程

    JApiDocs教程 前言 作为一名优秀的程序员来说,由于涉及到要与前端进行对接,所以避免不了的就是写接口文档.写完接口文档,一旦代码返回结果,参数等出现变动,接口文档还得随之改动,十分麻烦,违背了我 ...

  7. 通过Swagger快速生成接口文档

    1.添加依赖: 在pom中添加swagger的依赖,这里使用的swagger版本为2.7.0,springboot相应版本为2.0.3,jdk1.8 示例如下: <swagger.version ...

  8. RESTful之自动生成接口文档

    REST framework可以自动帮助我们生成接口文档.[必须是继承自rest_framework才会自动生成文档] 接口文档以网页的方式呈现. 自动接口文档能生成的是继承自APIView及其子类的 ...

  9. Django框架深入了解_05 (Django中的缓存、Django解决跨域流程(非简单请求,简单请求)、自动生成接口文档)(二)

    二.跨域: 回到顶部 跨域知识介绍: 点我以前博客 跨域解决方法:CORS:跨域资源共享 CORS请求分类(简单请求和非简单请求) 简单请求(simple request):只需要在头信息之中增加一个 ...

最新文章

  1. Nat. Commun. | 深度学习探索可编程RNA开关
  2. sklearn.naive_bayes
  3. itext设置pdf的尺寸_如何获取pdf文档iText 7的页面大小-问答-阿里云开发者社区-阿里云...
  4. Linux 金字塔 的shell命令,linux下保留文件系统下剩余指定数目文件的shell脚本
  5. 字体选择_十分钟带你掌握精准选择字体的方法!
  6. session的简介
  7. 【干货】用户画像和精准化平台系统实践.pdf(附下载链接)
  8. 用Keras搭建神经网络 简单模版(三)—— CNN 卷积神经网络(手写数字图片识别)...
  9. linux彻底清除history命令
  10. linux系统视屏录像_在Linux上的点击,弹出和故障排除录像
  11. 同花顺如何切换k线_同花顺k线图怎么切换(aud和人民币的汇率)
  12. Windows Dos命令大全
  13. html中 为什么在页面点击提交后reset按钮就不起作用了
  14. 我37岁,从互联网大厂跳槽到国企后,发现没有一劳永逸的工作。。。
  15. html与word字体大小转换,字体大小不一样,当html转换为Word使用Microsoft.Office.Interop.Word...
  16. 贾扬清、李沐、陈天奇:如何看待国内开源现状?
  17. matlab 图像 局部极值,[转载]matlab 图像局部求极值
  18. Python 数据可视化神器分享:pyecharts
  19. 环境变量是什么?如何配置环境变量
  20. Linux——磁盘分区与挂载

热门文章

  1. python展示两幅图_Tkinter,并排显示两幅图像
  2. 图像处理之空域内的滤波复原[均值滤波、顺序统计滤波和自适应滤波复原]
  3. 怎么设置CAD建筑标高?CAD建筑标高设置技巧
  4. java中文乱码的原因及解决方法
  5. python---常用快捷键
  6. 漏洞预警| vm2 任意代码执行漏洞
  7. 【latex】latex排版/overleaf在线/画图那些事
  8. logicaldoc二次开发
  9. LogicalDOC 6.6.2 发布,文档管理系统
  10. 计算机操作系统原理课件,【】计算机操作系统原理与实例分析PPT课件(完整版 全)精品.ppt...