zoukankan      html  css  js  c++  java
  • 修改springfox-swagger源码,使example中时间格式默认为“yyyy-MM-dd HH:mm:ss”

    修改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数据库转换(含字段转换、注释)

  • 相关阅读:
    Ztree-
    富文本编辑器Ueditor
    通知 弹框
    ResultEntity
    echart
    定时器,定时发邮件JavaMail
    重定向传值
    图片验证码
    异步json发送put或者delete
    异步时间格式转换插件
  • 原文地址:https://www.cnblogs.com/grey-wolf/p/11768103.html
Copyright © 2011-2022 走看看