阅读 325

SpringBoot集成Swagger(八)@ApiModelProperty()注解一撸到底 | Java随笔记

相关文章

Java随笔记:Java随笔记


前言

  • 上一篇我们讲到了@ApiModel()

  • 今天给大家带来@ApiModelProperty()详解!

  • 顾名思义,这玩意是用来标注属性的

ApiModelProperty()

  • 熟悉的小伙伴们都知道了,先撸进去看看!

  • @Target({ElementType.METHOD, ElementType.FIELD})
    @Retention(RetentionPolicy.RUNTIME)
    public @interface ApiModelProperty {
        String value() default "";
    
        String name() default "";
    
        String allowableValues() default "";
    
        String access() default "";
    
        String notes() default "";
    
        String dataType() default "";
    
        boolean required() default false;
    
        int position() default 0;
    
        boolean hidden() default false;
    
        String example() default "";
    
        /** @deprecated */
        @Deprecated
        boolean readOnly() default false;
    
        ApiModelProperty.AccessMode accessMode() default ApiModelProperty.AccessMode.AUTO;
    
        String reference() default "";
    
        boolean allowEmptyValue() default false;
    
        Extension[] extensions() default {@Extension(
        properties = {@ExtensionProperty(
        name = "",
        value = ""
    )}
    )};
    
        public static enum AccessMode {
            AUTO,
            READ_ONLY,
            READ_WRITE;
    
            private AccessMode() {
            }
        }
    }复制代码
  • @Target的参数可知:它是使用在属性上或者方法上!

  • @Retention的参数可知:它是运行时生效的!

  • 那么,这么多参数分别是干嘛的呢?下面详细道来。

  • 测试案例

    • @Data
      @ApiModel(value = "学生类",description = "这是类的详细描述信息呀",parent = CourseResponse.class,subTypes = CourseResponse.class)
      public class StudentResponse{
      
          @ApiModelProperty(value = "姓名",
                  name = "name",
                  allowableValues = "32",
                  access = "1",
                  notes = "用户的姓名",
                  dataType = "String",
                  required = false,
                  position = 0,
                  hidden = false,
                  example = "大鱼",
                  readOnly = false,
                  reference = "name",
                  allowEmptyValue = false
          )
          private String name;
          @ApiModelProperty(value = "年龄")
          private int age;
          @ApiModelProperty(value = "爱好")
          private String like;
      
          @ApiModelProperty()
          private CourseResponse perResponse;
      }复制代码
  • 启动看结果

    • image-20211126200834724.png

    • image-20211126200854047.png

  • 效果已经看到了,下面我们对其每个参数进行解释。

总结

  • value()

    • 参数类型为String,作用为此属性的简要描述。

  • name()

    • 参数类型为String,作用为允许重写属性的名称。

  • allowableValues()

    • 参数类型为String,作用为限制此参数存储的长度。

  • access()

    • 参数类型为String,作用为允许从API文档中过滤属性

  • notes()

    • 参数类型为String,作用为该字段的注释说明

  • dataType()

    • 参数类型为String,作用为参数的数据类型。

  • required()

    • 参数类型为String,作用为指定参数是否可以为空,默认为false

  • position()

    • 参数类型为int,作用为允许显式地对模型中的属性排序。

  • hidden()

    • 参数类型为boolean,作用为是否允许模型属性隐藏在Swagger模型定义中,默认为false。

  • example()

    • 参数为String类型,作用为属性的示例值。

  • readOnly()

    • 参数类型为boolean,作用为是否允许将属性指定为只读,默认为false。

  • reference()

    • 参数类型为String,作用为指定对对应类型定义的引用,重写指定的任何其他数据名称。

  • allowEmptyValue()

    • 参数类型为boolean,作用为是否允许传递空值,默认为false

  • 由于这个参数实在太多,而且很多不大常用,我就不一一演示对比的区别了。

  • 感兴趣的小伙伴们可以对着我的总结来试一试~

  • 以上都是个人所言,如有不对,欢迎指出。

  • 如果对您有帮助,希望给我点个赞点个关注呗!


路漫漫其修远兮,吾必将上下求索~

如果你认为i博主写的不错!写作不易,请点赞、关注、评论给博主一个鼓励吧~hahah


作者:大鱼丶
链接:https://juejin.cn/post/7034850877890363406


文章分类
代码人生
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐