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. Altium Designer添加元件库文件

    1 默认元件库路径 C:\Users\Public\Documents\Altium\AD 10.0.0.20340\Library 2 创建元件原理图库 图2.1 新建schlib 图2.2 绘制元 ...

  2. 爬虫(七)图片懒加载技术、selenium和PhantomJS

    动态数据加载处理 一.图片懒加载 什么是图片懒加载? 案例分析:抓取站长素材http://sc.chinaz.com/中的图片数据 #!/usr/bin/env python # -*- coding ...

  3. struts1与struts2的区别。

    1) 两个框架都是MVC的WEB框架, 2) struts1是老牌框架,应用很广泛,有很好的群众基础,使用它开发风险很小,成本低,Struts2核心设计思想主要源自Webwork,实现更优雅,更容易扩 ...

  4. swig模板引擎汇总

    1. Express中使用swig模板引擎 2.Swig 使用指南 3.jade to html online

  5. PHP设置凌晨时间戳

    这种需求应是很常见的,但一直没有时间整理. 一天可以领取2次奖励,今天领完了那就等明天再来. 这里面涉及到一个很重要的一点就是凌晨12点的时间戳,以前一直在前端去做判断.最近发现在后端用PHP获取凌晨 ...

  6. 安装 yaml-cpp,MP4V2

    一.在ubuntu上安装yaml-cpp的过程: git clone https://github.com/jbeder/yaml-cpp.git进入yaml-cpp目录后,mkdir buildcd ...

  7. 微信小程序电商实战(-)商城首页

    首先在app.json中配置页面和底部tabbar { "pages":[ "pages/index/index", "pages/kind/kind ...

  8. Html+css学习笔记一 创建一个网页

    第一个网页 新建一个记事本,把名字改成first.html <html> <head> <title>MyFristHtml</title> </ ...

  9. python练习小文章-文本爬虫

    一入“程”门深四海...... 有学习就得有练习,我来练一个文本爬虫,代码直接写到下面,抓取的是网页图片,简单好学,适合新手练习. 话不多说直接上干货! 1. 目标网址:https://www.jik ...

  10. [BZOJ1596]电话网络

    Problem 给你一棵树,可以在每个点上选择造塔或不造,每座塔可以覆盖这个节点和相邻节点,问覆盖整棵树的最小塔数. Solution 看到这道题的第一眼,我就觉得是一题贪心题,但看见出题的时候分类在 ...