修改swagger源码,使example中时间格式默认为“yyyy-MM-dd HH:mm:ss”

前言

简单点说,在swagger中,怎么能针对以下vo中的java.util.Date类型的字段:createDate,

能在swagger的界面上达到下面的效果呢?

如果尝试过的同学,可能知道,这里,如果不做任何修改的话,出来的效果是下面这样的:

解决方法

我一开始百度搜了下,找到了这篇:

https://www.cnblogs.com/yanfeiLiu/p/9792042.html

它的解决办法呢,是在ApiModelProperty注解上加了 example 属性,即下图所示:


/**
* 创建时间
*/
@ApiModelProperty(value = "创建时间", example = "2019-10-30 15:34:12")
private Date createDate;

我吧,感觉这样也很麻烦,如果能够感知到是Date类型,自动就把 example设为上述格式多好?

不用多说,估计要改源码了。

我的办法是,从 example()方法入手,查找使用到它的地方(记得maven要勾选下载源码),我们发现了如下两处:

断点打在上面的方法内之后,再次运行,寻找合适的切入点,发现其调用堆栈如下:

最终修改方法如下:

在工程里,新建了一个同包名同类名的 springfox.documentation.builders.ModelPropertyBuilder类,然后修改如下方法:

这里,简单附上代码,修改得很少:

	## springfox.documentation.builders.ModelPropertyBuilder
/**
* Updates the example
* @param example - example value
* @return this
* @deprecated @since 2.8.1 Use the one with Object as parameter
*/
@Deprecated
public ModelPropertyBuilder example(String example) {
if ("java.util.Date" .equals(qualifiedType)) {
this.example = "2019-10-30 15:34:12";
}else {
this.example = defaultIfAbsent(example, this.example);
}
return this;
}

具体的swagger版本可能有微小差别,但差别应该不大,我这边是最新版的2.9.2

        <dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.9.2</version>
</dependency>

总结

整体来说,只是覆盖jar包的类,很简单,主要是理清其逻辑。如果不清楚怎么覆盖jar包的类,可参考我上一篇文章。

懒要懒到底,能自动的就不要手动,Hibernate正向工程完成Oracle数据库到MySql数据库转换(含字段转换、注释)

修改springfox-swagger源码,使example中时间格式默认为“yyyy-MM-dd HH:mm:ss”的更多相关文章

  1. Lucene全文搜索之分词器:使用IK Analyzer中文分词器(修改IK Analyzer源码使其支持lucene5.5.x)

    注意:基于lucene5.5.x版本 一.简单介绍下IK Analyzer IK Analyzer是linliangyi2007的作品,再此表示感谢,他的博客地址:http://linliangyi2 ...

  2. 修改sqlarchemy源码使其支持jdbc连接mysql

    注意:本文不会将所有完整源码贴出,只是将具体的思路以及部分源码贴出,需要感兴趣的读者自己实验然后实现吆. 缘起 公司最近的项目需要将之前的部分业务的数据库连接方式改为jdbc,但由于之前的项目都使用s ...

  3. TCP/IP源码(59)——TCP中的三个接收队列

    http://blog.chinaunix.net/uid-23629988-id-3482647.html TCP/IP源码(59)——TCP中的三个接收队列  作者:gfree.wind@gmai ...

  4. 2018-09-24 Java源码英翻中网页演示

    在线演示地址: 源代码翻译 两部分如下. 独立的Java代码翻译库 续前文代码翻译尝试-使用Roaster解析和生成Java源码 源码库: program-in-chinese/java_code_t ...

  5. 源码解析.Net中IConfiguration配置的实现

    前言 关于IConfituration的使用,我觉得大部分人都已经比较熟悉了,如果不熟悉的可以看这里.因为本篇不准备讲IConfiguration都是怎么使用的,但是在源码部分的解读,网上资源相对少一 ...

  6. mysql-5.5.28源码安装过程中错误总结

    介绍一下关于mysql-5.5.28源码安装过程中几大错误总结,希望此文章对各位同学有所帮助.系统centOS 6.3 mini (没有任何编译环境)预编译环境首先装了众所周知的 cmake(yum ...

  7. 2018-10-08 Java源码英翻中进展-内测上线

    创建了一个子域名: http://translate.codeinchinese.com/ 欢迎试用, 如有建议/发现问题欢迎在此拍砖: program-in-chinese/code_transla ...

  8. 将Android源码导入eclipse中的方法以及编译Android源码指定模块

    本文博客地址:http://blog.csdn.net/qq1084283172/article/details/53365659 将android源码导入eclipse.androidstudio. ...

  9. 解决IIS7、IIS7.5中时间格式显示的问题

    今天在用IIS7的时候发现一个关于时间格式的问题,当我在ASP中使用now()时间函数的时候,日期是以"/"来分隔,而不是以"-"来分隔的,使得我在运行程序的时 ...

随机推荐

  1. 23种设计模式之抽象工厂(Abstract Factory Pattern)

    抽象工厂 当想创建一组密不可分的对象时,工厂方法似乎就不够用了 抽象工厂是应对产品族概念的.应对产品族概念而生,增加新的产品线很容易,但是无法增加新的产品.比如,每个汽车公司可能要同时生产轿车.货车. ...

  2. idea 设置jvm参数

    使用IDEA进行JVM参数设置: Run->Edit Configurations... 进入之后: 之后就可以运行代码测试,可以看到控制台打印的信息: 说明: -Xms:20M 初始化堆内存大 ...

  3. 【SQL server初级】数据库性能优化三:程序操作优化

    数据库优化包含以下三部分,数据库自身的优化,数据库表优化,程序操作优化.此文为第三部分 数据库性能优化三:程序操作优化 概述:程序访问优化也可以认为是访问SQL语句的优化,一个好的SQL语句是可以减少 ...

  4. java架构之路-(SpringMVC篇)SpringMVC主要流程源码解析(上)源码执行流程

    做过web项目的小伙伴,对于SpringMVC,Struts2都是在熟悉不过了,再就是我们比较古老的servlet,我们先来复习一下我们的servlet生命周期. servlet生命周期 1)初始化阶 ...

  5. 如何安装PHPstorm并配置php运行环境运行php项

    php是程序开发者常用的编程语言,那么它就需要一款简单实用的集成开发环境,也就是一款舒服的编辑器,今天笔者为大家介绍phpstorm这款软件,并详细的讲解如何用它配置php项目   工具/原料   笔 ...

  6. httpSession和Cookie

    1.session在何时被创建一个常见的误解是以为session在有客户端访问时就被创建,然而事实是直到某server端程序调用 HttpServletRequest.getSession(true) ...

  7. Nepxion Discovery【探索】微服务企业级解决方案

    Nepxion Discovery[探索]微服务企业级解决方案] Nepxion Discovery[探索]使用指南,基于Spring Cloud Greenwich版.Finchley版和Hoxto ...

  8. CentOS 8 网卡设置

    本次测试环境是在虚拟机上测试 网卡配置文件路径:/etc/sysconfig/network-scripts/ifcfg-ens33 [root@localhost ~]# cd /etc/sysco ...

  9. XCTF-CAT

    果然还是我太菜了呜呜呜,这道题仍然是没有自己做出来.哎. 这一道用的并不是PHP的环境,而是用Python中的Django编写的. 记得做过类似的一道题目.来源于MOCTF中的网站扫描器,当时做完后其 ...

  10. 【TencentOS tiny】深度源码分析(8)——软件定时器

    软件定时器的基本概念 TencentOS tiny 的软件定时器是由操作系统提供的一类系统接口,它构建在硬件定时器基础之上,使系统能够提供不受硬件定时器资源限制的定时器服务,本质上软件定时器的使用相当 ...