Lombok是一种通过注解的方式减少JAVA实体类中大量冗余代码,诸如get、set以及构造方法等的Java库

一、安装Lombok

步骤一 项目引入lombok插件

1 - 非maven依赖托管项目再lib文件夹中添加lombok.jar包
2 - maven项目直接在项目pom.xml文件夹添加依赖
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.12</version>
</dependency>

步骤二 在Intellij idea或者Eclipse集成lombok插件让他们可以识别lombok

Intellij idea
方式一、进入plugins->Browse repositories->输入Lombok搜索插件,点击install下载,这种方式目前尝试过,下载失败
方式二、进入github,搜索lombok for Intellij插件选择Intellij idea对应版本的插件下载zip包,把解压后的文件放到Intellij idea安装目录的插件库即plugins文件夹下

二、使用教程

1 - @Data注解作用于类中,相当于同时加入@Getter@Setter@ToString @EqualsAndHashCode

@Data
public class UserInfoDTO implements Serializable{
/**用户编号**/
private Long uid;

/**用户姓名**/
private String uname;

/**年龄**/
private Integer age;
}

2 - @Getter@Setter 可在类和成员变量上使用,注解作用于属性上用于自动生成get、set方法

public class UserInfoDTO implements Serializable{
/**用户编号**/
@Getter
private Long uid;

@Setter
/**用户姓名**/
private String uname;

/**年龄**/
private Integer age;
}

3 - @NonNull该注解用于判断是否为空,如果调用set方法设置为空则抛出java.lang.NullPointerException

public class UserInfoDTO implements Serializable{
/**用户编号**/
@Getter
private Long uid;

@Setter@NonNull
/**用户姓名**/
private String uname;

/**年龄**/
private Integer age;
}

4 - @Synchronized该注解作用与方法自动添加同步机制,生成的源码显示生成的方法并不直接锁方法而是锁该方法下的代码块,锁是对象锁

5 -@ToString注解主要是作用于ToString方法,里面可以设置多个属性

callSuper 是否输出父类的toString方法
includeFieldNames 是否包含字段名称,默认为true
exclude排除生成的toString字段

@Getter
@Setter
@ToString(callSuper = false, includeFieldNames = true, exclude = "uid")
public class UserInfoDTO implements Serializable{
/**用户编号**/
private Long uid;

/**用户姓名**/
private String uname;

/**年龄**/
private Integer age;

}

lombok生成的等价源码

public class UserInfoDTO implements Serializable {
private Long uid;
private String uname;
private Integer age;

public UserInfoDTO() {
}

public Long getUid() {
return this.uid;
}

public String getUname() {
return this.uname;
}

public Integer getAge() {
return this.age;
}

public void setUid(Long uid) {
this.uid = uid;
}

public void setUname(String uname) {
this.uname = uname;
}

public void setAge(Integer age) {
this.age = age;
}

public String toString() {
return "UserInfoDTO(uname=" + this.getUname() + ", age=" + this.getAge() + ")";
}
}

@Cleanup该注解用于确保已分配的资源被释放,例如IO连接的关闭

public static void testCleanUp(){
try{
@Cleanup FileOutputStream bos = new FileOutputStream("test.txt");
bos.write(new byte[]{'A','B','C'});
}catch(IOException ex){

}
}

lombok生成的等价源码

public static void testCleanUp() {
try {
FileOutputStream bos = new FileOutputStream("test.txt");

try {
bos.write(new byte[]{65, 66, 67});
} finally {
if(Collections.singletonList(bos).get(0) != null) {
bos.close();
}

}
} catch (IOException var5) {
;
}

}

看不懂为什么要先把文件输出流对象放到一个单例集合里面再去获取它进行判空

代码精简工具lombok的更多相关文章

  1. 代码精简之Lombok

    JavaWeb项目开发中,JavaBean总是不可避免的出现,随之而来的就是大量的getter.setter方法,虽然大部分的开发工具(比如Eclipse等)都支持自动生成这些东西,但是一旦Bean里 ...

  2. Java 代码精简

    Java 代码精简 利用语法 利用三元表达式 普通 String title; if (isMember(phone)) { title = "会员"; } else { titl ...

  3. 基于IDEA工具 lombok 的使用

    一.简介 Lombok 是一种 Java™ 实用工具,可用来帮助开发人员消除 Java 的冗长,尤其是对于简单的 Java 对象(POJO).它通过注解实现这一目的. 二.lombok的添加和常用注解 ...

  4. Python实现C代码统计工具(三)

    目录 Python实现C代码统计工具(三) 声明 一. 性能分析 1.1 分析单条语句 1.2 分析代码片段 1.3 分析整个模块 二. 制作exe Python实现C代码统计工具(三) 标签: Py ...

  5. JavaBean的实用工具Lombok(省去get、set等方法)

    转:https://blog.csdn.net/ghsau/article/details/52334762 背景   我们在开发过程中,通常都会定义大量的JavaBean,然后通过IDE去生成其属性 ...

  6. C++ 代码静态分析工具cppcheck【转】

    转自:http://blog.csdn.net/chen19870707/article/details/42393217 权声明:本文为博主原创文章,未经博主允许不得转载.   目录(?)[-] c ...

  7. Java效率工具Lombok使用与原理

    Java效率工具Lombok使用与原理 我个人觉得 Lombok是一个优化Java代码以及提升开发效率不错的工具.Lombok 的Github地址为:https://github.com/rzwits ...

  8. 2020最新IDEA插件大集合,一款能帮助你写代码的工具是多么重要

    摘要 12款为用户精心打造的Idea插件,含盖前后端,另把使用小技巧分享给大家,提高大家的码率,希望对你们有帮助! Lombok Lombok为Java项目提供了非常有趣的附加功能,使用它的注解可以有 ...

  9. Android代码分析工具lint学习

    1 lint简介 1.1 概述 lint是随Android SDK自带的一个静态代码分析工具.它用来对Android工程的源文件进行检查,找出在正确性.安全.性能.可使用性.可访问性及国际化等方面可能 ...

随机推荐

  1. fiddler抓不到chrome浏览器的请求

    今天遇到一个非常尴尬的问题,接口在某种情况下会报错,此时前端会展示NAN之类的东西,由于复现不了,接口现在一直不报 错了,所以就让前端做了个友好提示, 当接口报错时,给个提示“请稍后重试” ,我要测试 ...

  2. [数据结构] 2.7 Heap 堆

    * 注: 本文/本系列谢绝转载,如有转载,本人有权利追究相应责任. 1.堆是什么? (如图所示是一个小堆) 1)堆是一颗完全二叉树,它的最后一层不是满的,其他每一层都是满的,最后一层从左到右也没有空隙 ...

  3. CentOS7.5下安装、配置MySql数据库 --CentOS7.5

    1.下载MySql的rpm包 [root@VM_39_157_centos -]# wget http://repo.mysql.com/mysql-community-release-el7-5.n ...

  4. 如何解锁亚马逊A9的新算法?

    亚马逊每一次变动总能在跨境圈里掀起一场场风波,最近A9算法的更新更是牵动着不少卖家的心. A9算法是亚马逊运行的内核算法,只要消费者在亚马逊上面搜索了商品,那么他就已经开始使用了A9算法,通过分析每一 ...

  5. 举例说明$POST 、$HTTP_RAW_POST_DATA、php://input三者之间的区别

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  6. Kubernetes介绍及基本概念

    kubernetes介绍 Kubernetes是Google在2014年6月开源的一个容器集群管理系统,使用Go语言开发,Kubernetes也叫K8S.K8S是Google内部一个叫Borg的容器集 ...

  7. SqlServer 查看最近执行过的语句

    查看系统中最近执行的语句 ST.text AS '执行的SQL语句', QS.execution_count AS '执行次数', QS.total_elapsed_time AS '耗时', QS. ...

  8. ckeditor5字体颜色,字体背景颜色设置显示

    在config.js中添加相关代码: config.allowedContent=true;//关闭标签过滤, config.colorButton_enableAutomatic = true; c ...

  9. day 02 python 基础

    1.day1作业讲解 题目答案见day1 2.格式化输出 %占位符,s:字符串,d:数字 %%只是单纯的显示%(显示的%是后面的) #格式化输出 # % s d # name = input('请输入 ...

  10. java ssl 连接AD域

    1.安装证书服务和IIS服务,不需要启动asp.(其会在c盘生成一个crt文件)2.获取crt证书文件 windows 2003:文件位于系统盘根目录 windows 2008: 文件位于C:\Win ...