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. google搜索引擎爬虫爬网站原理

    google搜索引擎爬虫爬网站原理 一.总结 一句话总结:从几个大站开始,然后开始爬,根据页面中的link,不断爬 从几个大站开始,然后开始爬,根据页面中的link,不断加深爬 1.搜索引擎和数据库检 ...

  2. 从零开始,搭建 AI 音箱 Alexa 语音服务

    https://blog.csdn.net/gitchat/article/details/78869367

  3. JAVA程序设计的第一次作业

    这是我第一次接触博客,刚开始用博客很生疏,感觉很麻烦,但是后来慢慢从老师那里了解到了许多博客可以带给我们的便利.通过博客,我们不仅可以记录自己从刚开始进入程序学习的懵懵懂懂到后来想要学,想深究,想探讨 ...

  4. C(n,m)排列组合算法

    主要解决C(n,m)问题 static class Extension { public static IList<IList<T>> GetGroup<T>(th ...

  5. Cache Line

    转载: https://yq.aliyun.com/articles/46550

  6. mybatis 动态sql和参数

    mybatis 动态sql 名词解析 OGNL表达式 OGNL,全称为Object-Graph Navigation Language,它是一个功能强大的表达式语言,用来获取和设置Java对象的属性, ...

  7. Java使用Redis--jedis

    参考:菜鸟教程 http://www.runoob.com/redis/redis-java.html 1.Java 使用 Redis 开始在 Java 中使用 Redis 前, 我们需要确保已经安装 ...

  8. Jquery版本对IE浏览器的支持

    浏览器名称 Jquery最低 Jquery最高 IE6 1.0 1.12 IE7 1.0 1.12 IE8 1.0 1.13 jquery各版本下载:https://code.jquery.com/j ...

  9. C博客作业01——分支、顺序结构

    1.本章学习总结 1.1思维导图 本章学习体会及代码量学习体会 1.2.1学习体会 在暑假的时候就有加入新生学习群,对C语言有一定的基础,所以这周的学习相对轻松,但一些细节方面的知识并不是很了解.在这 ...

  10. Python3 Tcp未发送/接收完数据即被RST处理办法

    一.背景说明 昨天一个同事让帮忙写个服务,用于接收并返回他那边提交过来的数据,以便其查看提交的数据及格式是否正确. 开始想用django写个接口,但写接口接口名称就得是定死的,他那边只能向这接口提交数 ...