目录
一,Lombok简介
java工程中,我们要创建很多的java Bean。这些javaBean中都会写getter,setter,equals,hashCode和toString的模板代码,这些代码都没啥技术含量。
那么我们就是使用Lombok来自动生成这些代码,通过注解的方式。提高我们的工作效率。
Lombok的原理:JSR 269插件化注解处理。就是在编译生成字节码之前,Lombok根据自己编写的注解处理器,动态地修改 AST增加新的节点(即Lombok自定义注解所需要生成的代码),最终生成JVM可执行的字节码Class文件。
什么是JSR 269?
JSR269:PluggableAnnotationProcessingAPI
实现在Javac编译阶段利用“AnnotationProcessor”对自定义的注解进行预处理后生成真正在JVM上面执行的“Class文件
java反射技术的对比:
- 使用Annotation Processing自定义注解是在编译阶段进行修改
- JDK的反射技术是在运行时动态修改
结论:反射更加灵活一些但是带来的性能损耗更加大
二,添加依赖
<dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency>
三,Springboot统一返回封装
这种格式主要包含3部分:
code:状态码, 由后端统一定义各种返回结果的状态码
message:描述信息
data:返回的数据,例如列表数据
3.1,创建一个工具包util和一个JsonData类
JsonData类
packagecom.demo.util;importlombok.AllArgsConstructor;importlombok.Data;importlombok.NoArgsConstructor;@Data@AllArgsConstructor//会生成一个包含所有变量@NoArgsConstructor//生成一个无参数的构造方法publicclassJsonData{/**
* 状态码 0 表示成功,1表示处理中,-1表示失败
*/privateInteger code;/**
* 数据
*/privateObject data;/**
* 描述
*/privateString msg;// 成功,传入数据publicstaticJsonDatabuildSuccess(){returnnewJsonData(0,null,null);}// 成功,传入数据publicstaticJsonDatabuildSuccess(Object data){returnnewJsonData(0, data,null);}// 失败,传入描述信息publicstaticJsonDatabuildError(String msg){returnnewJsonData(-1,null, msg);}// 失败,传入描述信息,状态码publicstaticJsonDatabuildError(String msg,Integer code){returnnewJsonData(code,null, msg);}}
这个类写完就不用在实体类里写get和set方法
四,示例实体类
在实体类上加@Data注释就可以不用写get和set方法
加注释@Data这个注释和写get和set方法效果一样
packagecom.demo.bean;importcom.baomidou.mybatisplus.annotation.TableField;importcom.baomidou.mybatisplus.annotation.TableLogic;importcom.baomidou.mybatisplus.annotation.Version;importlombok.Data;@DatapublicclassPasser{/** */privateInteger id ;/** */privateString passername ;/** */privateString passerage ;/** */privateString passersex ;@VersionprivateInteger version;@TableLogic(value ="0",delval ="1")privateInteger deleted;}
五,@Data注解
@Data, 定义一个干净的类,增加此注解,mvn compile查看字节码
作用于类上,是以下注解的集合@ToString
@EqualsAndHashCode
@Getter
@Setter
@RequiredArgsConstructor
版权归原作者 天秤座的码农 所有, 如有侵权,请联系我们删除。