自定义swagger扩展解析jsondoc
需求规定
为了减少注释和swagger注解的重复定义, 通过规范注释,
让swagger可以通过javadoc来产生
替换@Api、@ApiOperation、@ApiModel、@ApiModelProperties等注解
只是对swagger的扩展,如果有swagger注解,以注解为准
运行环境
springboot2.1.7
jdk1.8
设计思想
系统构思
编译完成的class里没有注释的,所以注释信息只有在编译代码时存储起来
swagger本身是通过注解实现接口定义描述等加载的,现将代码注释生成json格式, 利用swagger扩展在启动项目时通过json进行加载到swagger中
需要配合自定义的javadoc-json-maven-plugin先将注释生成json文件
关键技术与算法
生成javadoc.json文件
com.example.CommentToJsonMain(已做成maven插件, 这里原始文件可做测试)
插件: https://github.com/zhaozhiwei1992/javadoc-json-maven-plugin
swagger扩展代码
com.example.SpringbootSwaggerJavadocApplication启动即可生效
类定义: com.example.plugin.CommentApiBuilder
方法定义: com.example.plugin.CommentOperationBuilder
类代码注释规范
/**
* @Title: PersonController
* @Package: com/example/springbootcache/controller/PersonController.java
* @Description: 用户信息接口
* @author: zhaozhiwei
* @date: 2022/10/25 下午8:23
* @version: V1.0
*/
方法代码注释规范
/**
* @date: 2022/10/25-上午10:19
* @author: zhaozhiwei
* @method: findByID
* @param id : 唯一id
* @return: com.lx.demo.springbootcache.domain.Person
* @Description: 根据id获取用户信息
* 获取十次, 只有第一次是读库,后续都是取缓存
* 直接删掉redis缓存里的内容,仍然可以获取数据,并且走缓存,此时获取的是服务缓存ehcache中的信息
* seq 10 |xargs -i curl -XGET 'http://localhost:8080/persons/2'
*/
基本处理流程
系统流程图

代码
https://github.com/zhaozhiwei1992/demo/tree/master/springboot/springboot-swagger-javadoc
参考
swagger扩展
https://github.com/hadix-lin/springfox-plus
https://blog.csdn.net/ydonghao2/article/details/109593416
https://blog.csdn.net/baiihcy/article/details/53861267
https://blog.csdn.net/qq_17623363/article/details/109259315
自定义swagger扩展解析jsondoc的更多相关文章
- Asp.net Core WebApi 使用Swagger做帮助文档,并且自定义Swagger的UI
WebApi写好之后,在线帮助文档以及能够在线调试的工具是专业化的表现,而Swagger毫无疑问是做Docs的最佳工具,自动生成每个Controller的接口说明,自动将参数解析成json,并且能够在 ...
- Spring源码情操陶冶-自定义节点的解析
本文承接前文Spring源码情操陶冶-DefaultBeanDefinitionDocumentReader#parseBeanDefinitions,特开辟出一块新地来啃啃这块有意思的骨头 自定义节 ...
- Spring 系列教程之自定义标签的解析
Spring 系列教程之自定义标签的解析 在之前的章节中,我们提到了在 Spring 中存在默认标签与自定义标签两种,而在上一章节中我们分析了 Spring 中对默认标签的解析过程,相信大家一定已经有 ...
- Spring源码阅读笔记05:自定义xml标签解析
在上篇文章中,提到了在Spring中存在默认标签与自定义标签两种,并且详细分析了默认标签的解析,本文就来分析自定义标签的解析,像Spring中的AOP就是通过自定义标签来进行配置的,这里也是为后面学习 ...
- Spring中自定义Schema扩展机制
一.前言 Spring 为基于 XML 构建的应用提供了一种扩展机制,用于定义和配置 Bean. 它允许使用者编写自定义的 XML bean 解析器,并将解析器本身以及最终定义的 Bean 集成到 S ...
- 一步一步自定义SpringMVC参数解析器
随心所欲,自定义参数解析器绑定数据. 题图:from Zoommy 干货 SpringMVC解析器用于解析request请求参数并绑定数据到Controller的入参上. 自定义一个参数解析器需要实现 ...
- 自定义和扩展 SharePoint 2010 Server 功能区
了解构成 SharePoint 2010 服务器功能区的组件以及如何通过演练两个功能区自定义项方案来自定义功能区. 适用范围: Microsoft SharePoint Foundation 2010 ...
- 使用自定义脚本扩展程序自动执行 VM 自定义任务
在 Build 开发者大会上推出VM 扩展程序的其中一个称为"自定义脚本扩展程序",它支持 PowerShell.如果这是您第一次访问这些博客,可能需要查看以前的博客,请单击 ...
- 基于Spring开发——自定义标签及其解析
1. XML Schema 1.1 最简单的标签 一个最简单的标签,形式如: <bf:head-routing key="1" value="1" to= ...
- Spring源码学习-容器BeanFactory(四) BeanDefinition的创建-自定义标签的解析.md
写在前面 上文Spring源码学习-容器BeanFactory(三) BeanDefinition的创建-解析Spring的默认标签对Spring默认标签的解析做了详解,在xml元素的解析中,Spri ...
随机推荐
- 在网页上调起本机C#程序
前言 最近开始整理笔记里的库存草稿,本文是 23 年 5 月创建的了(因为中途转移到 onedrive,可能还不止) 网页调起电脑程序是经常用到的场景,比如百度网盘下载,加入 QQ 群之类的 我之前做 ...
- 鸿蒙Navigation入门使用
Navigation组件适用于模块内和跨模块的路由切换,通过组件级路由能力实现更加自然流畅的转场体验,并提供多种标题栏样式来呈现更好的标题和内容联动效果.一次开发,多端部署场景下,Navigation ...
- 无快不破,在本地 docker 运行 IDEA 里面的项目?
目录 前言 Docker Compose 1. Docker Compose是什么? 2. Docker Compose 的具体步骤 3. 如何在IDEA项目里面使用Docker Compose 启动 ...
- ZCMU-1038
其实感觉不太难,读懂题意就行,我一开始没有仔细去读感觉就很懵.其题目意思就是一段字符串含有数字和'<'或者'>',一开始从左开始遍历,遇到'>'这类东西换方向,如果有多次遇到就删之前 ...
- H5 新增表单
1.提示占位 placeholder <input type="text" name="userName" placeholder="请输入用户 ...
- 使用七牛云上传文件报错incorrect region, please use up-z1.qiniup.com-迷恋自留地
最近用Git提交代码时,一直报如标题所示的错误.百度了很多都无法解决,包括改更改配置,SSh等.最后在一个论坛上,说可能之前输入的账号或密码有误.尝试后,完美解决. 解决方法: 找到如下图的位置: 可 ...
- 有关终端Github无法访问,connection timed out:443等问题
有关终端Github无法访问,connection timed out:443等问题 SSL_connect: Operation timed out in connection to github. ...
- 【C语言】【二级】将所指字符串中所有下标为奇数位置上的字母转换成大写
题目 请编写一个函数fun,它的功能是:将ss所指字符串中所有下标为奇数位置上的字母转换成大写(若该位置上不是字母,则不转换). 例如,若输入" abc4EFG",则应输出&quo ...
- Server check fail, please check server xxx ,port 9848 is available
[1]如果使用docker安装的nacos服务,2.x版本后增加了 grpc 通信并且增加nacos的集群端口上下偏移1000,创建容器时除了8848还需要把7848.9848都暴露出来.如:-p 7 ...
- 如何判断平台是x86还是arm
case $(uname -m) in x86_64) echo x86;; aarch64) echo arm;; esac ref 上面的代码片改自这里 https://stackoverflow ...