springfox 源码分析
萧明
开源软件knife4j作者
展开
-
springfox 源码分析(三) 初探Spring Plugin插件系统
更多springfox 源码系列文章可关注我的博客,点击前往时间:2019-5-22 12:46:50地点:单位、家中前言同MapStuct组件一样,因为springfox中运用到了Spring Plugin插件系统,我们对研究springfox源码之前,先来学习一下Spring Plugin插件的机制因为在工作中很少使用到Spring Plugin,所以学习记录下Spring P...原创 2019-05-23 20:07:01 · 7124 阅读 · 4 评论 -
springfox 源码分析(十三) 自定义扩展实现接口的排序
很多时候,Swagger定义的标准并不能满足我们实际的需求,比如拿分组后的接口来说,有适合我们希望我们的接口能够排序,假如我们当前有一个注册的需求实现,那么他的接口可能是这样的:1.获取验证码 -> 2.校验用户名是否有效 -> 3.注册验证 -> 4.登录如果我们没有排序的情况下,上面的接口对于开发人员来说可能是杂乱无章的,对于初级的接口对接人员来说,排序更能让开发者把...原创 2019-10-07 11:02:44 · 1747 阅读 · 0 评论 -
springfox 源码分析(十四) 归档得到ApiListing接口集合
在前面我们拿到了接口的Model类型集合,然后还获取到了该接口的ApiDescription描述信息此时针对这些信息,进行接口的资源整合,最终构造ApiListing类/*** * 通过已经筛选过滤的接口集合以及context上下文对象来得到接口列表 * @param context * @return */public Multimap<String, ApiListi...原创 2019-10-07 11:03:26 · 1174 阅读 · 0 评论 -
springfox 源码分析(十五) 归档得到Documentation文档对象
通过上篇的分析,我们已经得到了ApiListing的map集合,接下来最终做文档归档,得到Documentation对象/*** * 最终生成Documentation文档对象 * @param context * @return */ public Documentation scan(DocumentationContext context) { //...原创 2019-10-07 11:04:08 · 703 阅读 · 0 评论 -
springfox 源码分析(十六) 分组接口swagger-resouces
通过前面的分析,我们最终得到了springfox的Documentation文档对象,将我们的RESTful接口最终转换为了文档对象,文档对象是包含了接口列表、分组信息等属性的在springfox中,为我们提供了springfox-swagger-ui来呈现最终的接口信息.在ui界面中有两个核心接口:swagger-resources:swagger分组接口,创建多少Docket,就会有多...原创 2019-10-10 12:55:22 · 4012 阅读 · 0 评论 -
springfox 源码分析(十七) Swagger2接口文档示例接口api-docs
前面已经获取得到了swagger的分组接口信息了,接下来就是根据分组名称获取每个分组的Swagger资源详细信息,在springfox中提供了/v2/api-docs接口来进行获取来看接口的源码@Controller@ApiIgnorepublic class Swagger2Controller { public static final String DEFAULT_URL...原创 2019-10-10 12:56:03 · 3381 阅读 · 0 评论 -
springfox 源码分析(十八) 自定义扩展实现分组的排序
既然我们对springfox提供的接口已经有了一个初步的了解,那么针对我们在分组接口文章中提的需求,如果自定义扩展实现分组的排序如何做呢?在swagger-bootstrap-ui以前的版本中,已经存在了增强功能,增强功能主要的方式是重写了springfox的接口,然后在我们自定义的ui中渲染即可.因为SwaggerResource.java中没有提供排序的字段属性,所以我们可以扩展该类,...原创 2019-10-10 12:56:56 · 691 阅读 · 0 评论 -
springfox 源码分析(十九) guava库学习
我们在研究springfox的过程中,发现springfox大量使用了guava这个库的一些方法和类,针对我们在研究源码的学习过程中,将涉及到的guava库中的类进行归纳总结,后期在工作中我们也可以熟练运用guava库为我们提供的简介apiArrayListMultimap从字面意思来看map中包含了数组元素举一个简单的例子来帮助我们理解这个类我们在读书时,作为主体对象的我们(学生...原创 2019-10-10 12:57:29 · 273 阅读 · 0 评论 -
springfox 源码分析(二十) 自定义扩展实现Map、JSONObject等动态字段显示
待续...原创 2019-10-10 12:58:11 · 584 阅读 · 1 评论 -
springfox 源码分析(十二) 遍历接口获取ApiDescription集合
ApiDescription是springfox提供的接口描述信息类,在springfox 源码分析(十) 遍历接口获取Model对象中我们拿到了接口的类型Model集合信息,但除了Model信息,接口还有更多的信息基础信息主要包括:接口路径、consumes、produces、参数、请求类型、描述、说明、响应状态码、是否过时、扩展信息、分组因为我们的接口可以运行多个请求类型的存在,所...原创 2019-10-07 11:01:56 · 1912 阅读 · 0 评论 -
springfox 源码分析(十一) 自定义添加Swagger Models功能实现
在springfox 源码分析(十) 遍历接口获取Model对象这一篇中,我们其实已经大致了解了Springfox针对接口中涉及到的Model类进行解析初始化的过程在默认OperationModelsProviderPlugin插件中,collectGlobalModels收集全局Models的方法会将我们外部传入的Model添加到Springfox的集合中去,并且最终我们会在Swagger的...原创 2019-10-07 11:01:10 · 9422 阅读 · 2 评论 -
springfox 源码分析(十) 遍历接口获取Model对象
在上一篇中,我们了解到了springfox通过groupName的过滤,拿到了所有的接口,并且通过guava库的ArrayListMultimap对接口的Controller进一步进行了分组,接下来就是解析每个接口的操作了这篇主要介绍springfox解析每个接口中涉及的Model类操作,这其中包含:参数中是Java Bean的参数类型 接口返回非void、基础类型的类型 在@ApiR...原创 2019-10-07 11:00:22 · 1212 阅读 · 1 评论 -
springfox 源码分析(一) 程序入口
日期:2019-5-21 21:05:15地点:家中前言最近也是闲来无事,加上对swagger-bootstrap-ui也已经发布了将近26个稳定版本了,想到很多以后更有趣的功能,从Java底层扩展插件的方式开发出让国人拥有更棒的文档体验,所以决定研究一下springfox的源码,看能否对自己有一些启发.开发一些有趣的功能呢.关于springfox的使用这里不做过多的说明,可以自行...原创 2019-10-06 12:40:30 · 2483 阅读 · 2 评论 -
springfox 源码分析(二) 初探mapstruct
时间:2019-5-22 12:40:21地点:单位前言在继续阅读学习springfox源码之前,我们需要先来学习一下mapstruct这个组件,只有在理解了mapstruct组件后,后面再看springfox的源码才不会有疑惑因为之前并没有接触过mapstruct这个组件,所以记录一下学习的过程.mapstruct官网地址:http://mapstruct.org/G...原创 2019-10-06 12:41:34 · 815 阅读 · 0 评论 -
springfox 源码分析(四) 配置类初始化
时间:2019-5-23 12:46:50地点:单位、家中@EnableSwagger2有了二三章的理解,此时我们再来看EnableSwagger2注解的内容@Retention(value = java.lang.annotation.RetentionPolicy.RUNTIME)@Target(value = { java.lang.annotation.ElementT...原创 2019-10-06 12:42:20 · 2998 阅读 · 0 评论 -
springfox 源码分析(五) web配置类Plugin插件的使用
时间:2019-5-23 14:46:50地点:家中前言我们在上一篇文章,通过@EnableSwagger2注解,知道springfox使用开启Plugin注解的配置,注入了很多Plugin的配置类,结合我们第二篇针对Spring Plugin的使用文章介绍,该篇主要探索springfox中的各种不同Plugin的具体作用,以及声明了那些方法插件在SpringfoxWebMvc...原创 2019-10-06 12:43:09 · 3669 阅读 · 3 评论 -
springfox 源码分析(六) web配置类扫描包作用探索
时间:2019-5-23 18:46:50地点:家中我们在上一篇中,知道了springfox一系列Plugin接口的实现、作用而此时,我们联想到springfox为我们提供的Configuration配置类中使用了包路径扫描先来看OperationBuilderPlugin的实现类之一OperationDeprecatedReader的代码OperationDeprecated...原创 2019-10-07 10:57:10 · 1849 阅读 · 1 评论 -
springfox 源码分析(七) 文档初始化
时间:2019-5-23 20:12:04地点:家中通过前面几篇文章对springfox的介绍,以及我们的学习准备工作,这篇我们将正式来探索springfox是如何初始化的我们在学算法的时候,其中一个算法是快速排序,而快速排序讲究的是如果给定一个集合的元素<2,那其实就不用排序了,那就是最快的,取集合中任意元素M,然后,比M小的,排左边,比M大的排右边,这样只需要排2次(递归调...原创 2019-10-07 10:57:50 · 1393 阅读 · 0 评论 -
springfox 源码分析(八) 遍历接口获取Model对象
我们通过读DocumentationPluginsBootstrapper代码中的start方法,了解到springfox根据我们外部提供的Docket对象进行初始化时,会通过Docket对象构建DocumentationContext对象来进行初始化操作private DocumentationContext buildContext(DocumentationPlugin each) {...原创 2019-10-07 10:58:33 · 1430 阅读 · 0 评论 -
springfox 源码分析(九) 文档初始化-分组
在前面我们了解了DocumennationContext的初始化过程,包括一系列的默认属性的赋值,接下来,开始真正的文档解析操作我们的源码分析方式是按照springfox的文档初始化来进行归纳的,所以也是看到哪儿,就写到哪儿,当我们整个过程都研究完后,我会总结一篇文章来统一说明springfox的整个流程说明,或许以图文的方式来配合说明更能加深我们的印象.我们在前面的初始化过程中,spri...原创 2019-10-07 10:59:11 · 684 阅读 · 0 评论 -
springfox 源码分析(二十一) 忽略参数Class类型
我们在前面的源码过程中,了解了springfox的基本工作原理,接下来,我们可以通过使用springfox给我们提供的外部接口,来处理一些我们工作中碰到的问题,或者进行自定义扩展本篇主要介绍如何来忽略某些特定的参数Class类型先举一个例子,假如我们的接口是这样的:@PostMapping("/createOr33der")@ApiOperation(value = "创建订单...原创 2019-10-10 12:58:53 · 688 阅读 · 0 评论