首页 > 其他分享 >Lombok,Swagger,Jackson中的注解汇总

Lombok,Swagger,Jackson中的注解汇总

时间:2023-12-28 10:46:52浏览次数:34  
标签:序列化 Jackson JSON 参数 注解 Lombok Swagger 作用 属性

Lombok相关(通过注解的方式,在编译时自动为属性生成构造器、getter/setter、equals、hashcode、toString方法):#

maven添加依赖或下载jar包:

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.16.20</version>
    <scope>provided</scope>
</dependency>

常用注解:

@Data

作用:注解在类上,为类的所有属性自动生成setter、getter、equals、canEqual、hashCode、toString方法。

@Getter/@Setter

作用:注解在属性上,为相应的属性自动生成Getter/Setter方法。

@NonNull

作用:注解在属性或构造器上,为属性生成非空声明,校验参数,避免空指针。

@Cleanup

作用:自动调用close()方法。(关闭资源)

@EqualsAndHashCode

作用:注解在类上,生成equals()和hashCode()方法,默认使用非静态,非瞬态的属性,默认仅使用该类中定义的属性且不调用父类的方法,可通过参数exclude排除一些属性,可通过参数of指定仅使用哪些属性。

(exclude={"id", "shape"})//排除一些属性
(callSuper=true)//让其生成的方法中调用父类的方法,默认是不使用父类的属性,可能导致问题。

@ToString

作用:注解在类上,生成toString()方法,默认会输出类名,所有属性,用逗号分隔。

修饰符和类型可选元素描述
boolean callSuper toString在输出中包含超类实现的结果。
boolean doNotUseGetters 通常情况下,如果 getters是可用的,那么被调用。
java.lang.String[] exclude 这里列出的任何字段将不会被打印在生成的toString实现中。
boolean includeFieldNames 在打印时包括每个字段的名称。
java.lang.String[] of 如果存在,明确列出要打印的字段。

@NoArgsConstructor, @RequiredArgsConstructor and @AllArgsConstructor

作用:注解在类上,无参构造器、部分参数构造器、全参构造器。


Swagger相关(自动生成API文档):#

Maven添加依赖:

<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger2</artifactId>
    <version>2.2.2</version>
</dependency>

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

在application同级目录新建swagger2文件,添加swagger2配置类

package com.wtw.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
/**
 * Swagger2配置类
 * 在与spring boot集成时,放在与Application.java同级的目录下。
 * 通过@Configuration注解,让Spring来加载该类配置。
 * 再通过@EnableSwagger2注解来启用Swagger2。
 */
@Configuration
@EnableSwagger2
public class Swagger2 {
    /**
     * 创建API应用
     * apiInfo() 增加API相关信息
     * 通过select()函数返回一个ApiSelectorBuilder实例,用来控制哪些接口暴露给Swagger来展现,
     * 本例采用指定扫描的包路径来定义指定要建立API的目录。
     * 还可以扫描注解来定义
     return    docket.apiInfo(apiInfo()).select().apis(RequestHandlerSelectors.withClassAnnotation(RestController.class)).paths(PathSelectors.any()).build();
     * @return
     */
    @Bean
    public Docket createRestApi() {
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.abel.example.controller"))
                .paths(PathSelectors.any())
                .build();
    }

    /**
     * 创建该API的基本信息(这些基本信息会展现在文档页面中)
     * 访问地址:http://项目实际地址/swagger-ui.html
     * @return
     */
    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                .title("Spring Boot中使用Swagger2构建RESTful APIs")
                .description("描述信息")
                .termsOfServiceUrl("项目地址")
                .contact("wtw")
                .version("1.0")
                .build();
    }
}

通过createRestApi函数创建Docket的Bean之后,apiInfo()用来创建该Api的基本信息(这些基本信息会展现在文档页面中)

@Api(value="",tags="")

作用:放置于controller的一个类上,标志这个类是swagger资源

@ApiOperation()

作用:作用于方法之上,表示是一个http的请求

参数名称参数介绍
value 方法描述
notes 方法描述详情
tags 标签,可继承类的标签
response 返回类型
httpMethod 请求方法

@ApiParam()

作用:作用于方法,用于参数字段的说明

参数名称参数介绍
name 参数名称
value 参数解释
required 是否必需

@ApiModel()

作用:作用于类,对类进行说明,用于实体类接收或者返回

参数名称参数介绍
value 对象名
description 对象描述

@ApiModelProperty()

作用:作用于实体类,用于实体类中某个字段

参数名称参数解释
value 参数解释
name 参数名称
dataType 属性类型
required 是否必填
example 示例
hidden 隐藏

@ApiImplicitParams()

作用:作用于方法之上,解释请求参数里边添加@ApiImplicitParam()注解

参数名称参数解释
name 参数名称
value 参数解释
paramType 参数类型
required 是否必需

Jackson相关( json 解析器之一,用来序列化和反序列化 json 的 Java 的开源框架):#

用法详解:https://cloud.tencent.com/developer/article/1662931

Maven添加依赖:

<dependency>
  <groupId>com.fasterxml.jackson.core</groupId>
  <artifactId>jackson-core</artifactId>
  <version>2.9.6</version>
</dependency>

<dependency>
  <groupId>com.fasterxml.jackson.core</groupId>
  <artifactId>jackson-annotations</artifactId>
  <version>2.9.6</version>
</dependency>

<dependency>
  <groupId>com.fasterxml.jackson.core</groupId>
  <artifactId>jackson-databind</artifactId>
  <version>2.9.6</version>
</dependency>

Read + Write注解(影响从JSON读取Java对象以及将Java对象写入JSON)#

@JsonIgnore

作用:写在属性上,在将JSON读取到Java对象中以及将Java对象写入JSON时,都将忽略该属性。

@JsonIgnoreProperties

作用:写在类上,作用与@jsonIgnore一致,区别是用于指定要忽略的类的属性列表。

@JsonIgnoreType

作用:写在类上,所有该类的实例都将被忽略。

@JsonAutoDetect

作用:写在类上,告诉Jackson在读写对象时包括非public修饰的属性。

JsonAutoDetect.Visibility类包含与Java中的可见性级别匹配的常量,表示ANY,DEFAULT,NON_PRIVATE,NONE,PROTECTED_AND_PRIVATE和PUBLIC_ONLY。

Read注解(仅影响Jackson将JSON解析为对象的方式)#

@JsonSetter

作用:写在setter方法上,为给定的JSON字段使用setter方法,将JSON读入对象时,将此setter方法的名称与JSON数据中的属性名称相匹配,Java类内部使用的属性名称与JSON文件中使用的属性名称不同,就用到它。

@JsonAnySetter

作用:写在setter方法上,为JSON对象中所有无法识别的字段调用相同的setter方法

@JsonCreator

作用:写在构造方法上,用于告诉Jackson该Java对象具有一个构造函数(“创建者”),该构造函数可以将JSON对象的字段与Java对象的字段进行匹配,还必须注解构造函数的参数,以告诉Jackson将JSON对象中的哪些字段传递给哪些构造函数参数。

添加了@JsonCreator和@JsonProperty注解的PersonImmutable类的示例如下:

public class PersonImmutable {

    private long   id   = 0;
    private String name = null;

    @JsonCreator
    public PersonImmutable(
            @JsonProperty("id")  long id,
            @JsonProperty("name") String name  ) {

        this.id = id;
        this.name = name;
    }

    public long getId() {
        return id;
    }

    public String getName() {
        return name;
    }
}

@JacksonInject

作用:写在属性上,用于将值注入到解析的对象中,而不是从JSON中读取这些值。

@JsonDeserialize

作用:写在属性上,为Java对象中给定的属性指定自定义反序列化器类。

Write注解(影响Jackson将Java对象序列化(写入)到JSON的方式)#

@JsonInclude

作用:写在类上,告诉Jackson仅在某些情况下包括属性。即什么条件包含该属性。

@JsonInclude(JsonInclude.Include.NON_EMPTY)

@JsonGetter

作用:告诉Jackson,应该通过调用getter方法而不是通过直接字段访问来获取某个字段值。

@JsonAnyGetter

作用:写在方法上,将Map用作要序列化为JSON的属性的容器,Map中的所有键值对都将作为对象的一部分序列化为JSON。

@JsonPropertyOrder

作用:写在类上,可用于指定将Java对象的字段序列化为JSON的顺序。

@JsonRawValue

作用:写在属性上,告诉Jackson该属性值应直接写入JSON输出。

@JsonValue

作用:写在方法上,告诉Jackson,Jackson不应该尝试序列化对象本身,而应在对象上调用将对象序列化为JSON字符串的方法。

@JsonSerialize

作用:写在属性上,用于为Java对象中的字段指定自定义序列化程序。

@JsonProperty

作用:写在属性上,把属性的名称序列化时转换为另外一个名称。

@JsonFormat

作用:写在属性或者方法上,把属性的格式序列化时转换成指定的格式。

@JsonFormat(timezone ="GMT+8", pattern = "yyyy-MM-dd HH:mm") 
public Date getBirthDate()

作者:恋R

出处:https://www.cnblogs.com/wutiwang/p/14473893.html

版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。

一点一滴,终将汇成江流大河。

标签:序列化,Jackson,JSON,参数,注解,Lombok,Swagger,作用,属性
From: https://www.cnblogs.com/wjsqqj/p/17932199.html

相关文章

  • Jackson注解大全(下)
    4.Jackson常用注解4.1.@JsonProperty@JsonProperty注解用于属性上,作用是把该属性的名称序列化为另外一个名称,例如将theName属性序列化为name,使用@JsonProperty("name")注解。@JsonProperty不仅仅是在序列化的时候有用,反序列化的时候也有用,比如有些接口返回的是json字符串,命......
  • Swagger Editor 实操指南:打造优质 API 文档
    在API开发的领域中,Swagger以其卓越的使用效率与便捷性,备受开发者欢迎。它是一个强大的接口设计工具,允许开发人员对 RESTfulAPI 进行高效的设计、构建及测试工作。本文旨在深入探讨其中一个子工具——SwaggerEditor的使用介绍及它的有点。SwaggerEditor是一个基于开源的在......
  • swagger报错Unable to render this definition
    问题描述:访问swagger时,报错endofthestreamoradocumentseparatorisexpected,UnabletorenderthisdefinitionTheprovideddefinitiondoesnotspecifyavalidversionfield.PleaseindicateavalidSwaggerorOpenAPIversionfield.Supportedversionfields......
  • Lombok依赖
     1.介绍Lombok依赖可在编译时,自动添加JavaBean结构。例如常用的getter、setter、toString、构造器和equals等方法。2.导入(pom.xml)Maven依赖:<!--lombok可自动添加javaBean结构--><dependency><groupId>org.projectlombok</gr......
  • Swagger
    Swagger是一组规范和工具,用于设计、构建、文档化和消费RESTful风格的Web服务。它旨在帮助开发者更轻松地设计和使用API。主要组成部分:OpenAPI规范(以前称为Swagger规范):定义了API的结构和功能,包括端点、参数、请求和响应格式等。使用YAML或JSON格式编写,描述了整......
  • ZIMP - swagger-ui
     zzh@ZZHPC:/zdata/Github$gitclonehttps://github.com/swagger-api/swagger-ui.gitCloninginto'swagger-ui'...remote:Enumeratingobjects:41700,done.remote:Countingobjects:100%(530/530),done.remote:Compressingobjects:100%(251/251......
  • MappingJackson2HttpMessageConverter使用及jackson配置原理和避坑说明
    转载自:https://blog.csdn.net/Heron22/article/details/109512976MappingJackson2HttpMessageConverter消息转换器创建和生效原理HttpMessageConverters对象的创建使用WebMvcConfigurationSupport配置时转换器创建过程使用WebMvcAutoConfiguration配置时转换器创建过......
  • Swagger信息配置与常用注解
    转载自:https://blog.csdn.net/donglinjob/article/details/108550887 Swagger信息配置与常用注解一、Swagger 配置可以在项目中创建SwaggerConfig,进行配置文档内容。1配置基本信息Docket:摘要对象,通过对象配置描述文件的信息。apiInfo:设置描述文件中info。参数类型......
  • 后端 API 接口文档 Swagger 使用指南
    后端API接口文档Swagger使用指南转载自:https://zhuanlan.zhihu.com/p/98560871前言一:swagger是什么?二:为什么要使用swaager?2.1:对于后端开发人员来说2.2:对于前端开发来说2.3:对于测试三:如何搭一个swagger3.1:引入swagger的依赖3.2:springBoot整合swagg......
  • Swagger(一) Swagger/Springfox 入门简介
    转载自:https://blog.csdn.net/donglinjob/article/details/108550636 Swagger/Springfox入门简介一、Swagger 简介1前言接口文档对于前后端开发人员都十分重要。尤其近几年流行前后端分离后接口文档又变成重中之重。接口文档固然重要,但是由于项目周期等原因后端人员经......