SpringBoot2.0(Lombok,SpringBoot统一返回封装)

简介: SpringBoot2.0(Lombok,SpringBoot统一返回封装)

一,Lombok简介

java工程中,我们要创建很多的java Bean。这些javaBean中都会写getter,setter,equals,hashCode和toString的模板代码,这些代码都没啥技术含量。

那么我们就是使用Lombok来自动生成这些代码,通过注解的方式。提高我们的工作效率。

Lombok的原理:JSR 269插件化注解处理。就是在编译生成字节码之前,Lombok根据自己编写的注解处理器,动态地修改 AST增加新的节点(即Lombok自定义注解所需要生成的代码),最终生成JVM可执行的字节码Class文件。

什么是JSR 269?

JSR 269:  Pluggable Annotation Processing API
实现在Javac编译阶段利用“Annotation Processor”对自定义的注解进行预处理后生成真正在JVM上面执行的“Class文件

java反射技术的对比:

  1. 使用Annotation Processing自定义注解是在编译阶段进行修改
  2. JDK的反射技术是在运行时动态修改
结论:反射更加灵活一些但是带来的性能损耗更加大

二,添加依赖

    <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>

三,Springboot统一返回封装

这种格式主要包含3部分:

code:状态码, 由后端统一定义各种返回结果的状态码

message:描述信息

data:返回的数据,例如列表数据

3.1,创建一个工具包util和一个JsonData类

JsonData类

package com.demo.util;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor //会生成一个包含所有变量
@NoArgsConstructor //生成一个无参数的构造方法
public class JsonData {
    /**
     * 状态码 0 表示成功,1表示处理中,-1表示失败
     */
    private Integer code;
    /**
     * 数据
     */
    private Object data;
    /**
     * 描述
     */
    private String msg;
    // 成功,传入数据
    public static JsonData buildSuccess() {
        return new JsonData(0, null, null);
    }
    // 成功,传入数据
    public static JsonData buildSuccess(Object data) {
        return new JsonData(0, data, null);
    }
    // 失败,传入描述信息
    public static JsonData buildError(String msg) {
        return new JsonData(-1, null, msg);
    }
    // 失败,传入描述信息,状态码
    public static JsonData buildError(String msg, Integer code) {
        return new JsonData(code, null, msg);
    }
}

这个类写完就不用在实体类里写get和set方法

四,示例实体类

在实体类上加@Data注释就可以不用写get和set方法

加注释@Data这个注释和写get和set方法效果一样

package com.demo.bean;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.Version;
import lombok.Data;
@Data
public class Passer {
    /**  */
    private Integer id ;
    /**  */
    private String passername ;
    /**  */
    private String passerage ;
    /**  */
    private String passersex ;
    @Version
    private Integer version;
    @TableLogic(value = "0",delval = "1")
    private Integer deleted;
}

五,@Data注解

@Data, 定义一个干净的类,增加此注解,mvn compile查看字节码

作用于类上,是以下注解的集合

@ToString

@EqualsAndHashCode

@Getter

@Setter

@RequiredArgsConstructor

相关文章
|
12月前
|
架构师 NoSQL Java
【案例实战】SpringBoot3.x自定义封装starter实战
【案例实战】SpringBoot3.x自定义封装starter实战
【案例实战】SpringBoot3.x自定义封装starter实战
|
1月前
|
JSON 前端开发 Java
Springboot前后端分离项目统一封装返回结果
Springboot前后端分离项目统一封装返回结果
|
2月前
|
缓存 NoSQL Java
springboot中集成redis,二次封装成工具类
springboot中集成redis,二次封装成工具类
180 0
|
2月前
|
JSON 前端开发 Java
Spring Boot3统一结果封装
Spring Boot3统一结果封装
47 1
|
4月前
|
Java 关系型数据库 MySQL
结合springboot+mybatis-plus+lombok,自定义Page封装类
结合springboot+mybatis-plus+lombok,自定义Page封装类
57 0
|
9月前
|
JSON JavaScript 前端开发
Spring Boot + Vue 前后端分离开发,前端网络请求封装与配置(二)
Spring Boot + Vue 前后端分离开发,前端网络请求封装与配置
|
4月前
|
JSON 前端开发 Java
SpringBoot - 统一格式封装及高阶全局异常处理
SpringBoot - 统一格式封装及高阶全局异常处理
51 0
|
5月前
|
Oracle Java 关系型数据库
Generator【SpringBoot集成】代码生成+knife4j接口文档(2种模板设置、逻辑删除、字段填充 含代码粘贴可用)保姆级教程(注意事项+建表SQL+代码生成类封装+测试类)
Generator【SpringBoot集成】代码生成+knife4j接口文档(2种模板设置、逻辑删除、字段填充 含代码粘贴可用)保姆级教程(注意事项+建表SQL+代码生成类封装+测试类)
28 0
|
5月前
|
Java 数据格式 Spring
SpringBoot统一功能处理(统⼀⽤户登录权限验证、统⼀异常处理、统⼀数据格式封装)
SpringBoot统一功能处理(统⼀⽤户登录权限验证、统⼀异常处理、统⼀数据格式封装)
|
8月前
|
JavaScript 项目管理
SpringBoot&Vue&EmementUI前后端分离整合、统一封装axios、跨域配置
SpringBoot&Vue&EmementUI前后端分离整合、统一封装axios、跨域配置
108 0