Lombok 简单入门
原文地址:Lombok 简单入门
博客地址:http://www.extlight.com
一、前言
Lombok 是一个 Java 库,它作为插件安装至编辑器中,其作用是通过简单注解来精简代码,以此达到消除冗长代码的目的。
二、简单介绍
2.1 优点
通过注解自动生成成员变量的 getter、setter 等方法,使代码简洁
修改类变量名时,无需关注其 getter、setter 等方法
2.2 缺点
降低源码文件的可读性。
2.3 原理
从 Java 6 开始,javac 就支持 JSR 269 API 规范,而 Lombok 实现 JSR 269 Pluggable Annation Processing API 规范。
当我们编写代码并保存后,编辑器会自动编译源码文件,在这个过程中,源码先被转化为 AST。
然后,Lombok 插件解析 AST 是否存在 Lombok 的注解。如果存在则修改 AST ,使其生成注解对应的代码。
最终将修改的 AST 解析并生成字节码文件。
三、安装插件
为编辑器安装 Lombok 插件。
3.1 IDEA 安装
在 IDEA 界面点击 “File”->"Settings" 弹出设置框,选择左侧 “Plugins”,通过 “Browse repositories” 搜索 lombok 关键字安装即可。
3.2 Eclipse 安装
点击 Lombok.jar,下载该 jar 包。
双击 jar 包会弹出一个安装界面,点击界面的“Specify location...” 安装选择 Eclipse 的安装路径(精确到 eclipse.exe)。
四、使用
使用 Lombok 的方法非常简单,就是在类上或者成员变量上添加注解即可。
为了能使用注解,我们还需要在项目中引入 lombok 的 jar 包。
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>0.9.2</version>
</dependency>
4.1 注解介绍
Lombok 常用的注解如下:
| 注解名 | 作用描述 |
|---|---|
| @Getter | 作用在类上或成员变量上,生成对应的 getter 方法 |
| @Setter | 作用在类上或成员变量上,生成对应的 setter 方法 |
| @NoArgsConstructor | 作用在类上,生成对应的无参构造方法 |
| @AllArgsConstructor | 作用在类上,生成对应的有参构造方法 |
| @ToString | 作用在类上,生成对应的 toString 方法 |
| @EqualsAndHashCode | 作用在类上,生成对应的 equals 和 hashCode 方法 |
| @Data | 作用在类上,效果等同于上述 5 个注解,排除 @AllArgsConstructor 功能 |
| @Log4j/@Slf4j | 作用在类上,生成对应的 Logger 对象,变量名为 log |
4.2 案例演示
本次测试使用 Ecplise 编辑器。
@Data
public class User {
private int id;
private String name;
private String password;
private Date birthday;
}
当添加注解保存文件后,Ecplise 编辑器的 Outline 视图结果如下:

我们还可以使用 jd-gui 等反编译工具查看源码,结果如下:

五、参考资料
Lombok 简单入门的更多相关文章
- 用IntelliJ IDEA创建Gradle项目简单入门
Gradle和Maven一样,是Java用得最多的构建工具之一,在Maven之前,解决jar包引用的问题真是令人抓狂,有了Maven后日子就好过起来了,而现在又有了Gradle,Maven有的功能它都 ...
- [原创]MYSQL的简单入门
MYSQL简单入门: 查询库名称:show databases; information_schema mysql test 2:创建库 create database 库名 DEFAULT CHAR ...
- Okio 1.9简单入门
Okio 1.9简单入门 Okio库是由square公司开发的,补充了java.io和java.nio的不足,更加方便,快速的访问.存储和处理你的数据.而OkHttp的底层也使用该库作为支持. 该库极 ...
- emacs最简单入门,只要10分钟
macs最简单入门,只要10分钟 windwiny @2013 无聊的时候又看到鼓吹emacs的文章,以前也有几次想尝试,结果都是玩不到10分钟就退出删除了. 这次硬着头皮,打开几篇文章都看完 ...
- 【java开发系列】—— spring简单入门示例
1 JDK安装 2 Struts2简单入门示例 前言 作为入门级的记录帖,没有过多的技术含量,简单的搭建配置框架而已.这次讲到spring,这个应该是SSH中的重量级框架,它主要包含两个内容:控制反转 ...
- Docker 简单入门
Docker 简单入门 http://blog.csdn.net/samxx8/article/details/38946737
- Springmvc整合tiles框架简单入门示例(maven)
Springmvc整合tiles框架简单入门示例(maven) 本教程基于Springmvc,spring mvc和maven怎么弄就不具体说了,这边就只简单说tiles框架的整合. 先贴上源码(免积 ...
- git简单入门
git简单入门 标签(空格分隔): git git是作为程序员必备的技能.在这里就不去介绍版本控制和git产生的历史了. 首先看看常用的git命令: git init git add git comm ...
- 程序员,一起玩转GitHub版本控制,超简单入门教程 干货2
本GitHub教程旨在能够帮助大家快速入门学习使用GitHub,进行版本控制.帮助大家摆脱命令行工具,简单快速的使用GitHub. 做全栈攻城狮-写代码也要读书,爱全栈,更爱生活. 更多原创教程请关注 ...
随机推荐
- UVA-1619 Feel Good (单调队列)
题目大意:给一个非负整数序列,求出一个使得区间和乘以区间最小值最大的区间. 题目分析:单调队列.维护两个数组,l[i]表示以a[i]为最小值的左半区间的最左边端点,r[i]表示以a[i]为最小值的右半 ...
- CodeForces 297D Color the Carpet (脑补题)
题意 一个h*w的矩阵上面涂k种颜色,并且每行相邻格子.每列相邻格子都有=或者!=的约束.要求构造一种涂色方案使得至少有3/4的条件满足. 思路 脑补神题--自己肯定想不出来T_T-- 官方题解: 2 ...
- socketserver源码简介
一.socketserver流程简介 +------------+ | BaseServer | +------------+ | v +-----------+ +----------------- ...
- 控制图片在latex中的位置
如何做到自己控制图片在latex中的位置? 方法:在 \begin{figure} 后面加参数 [h!] 即 \begin{figure}[h!] % Requires \usepackage{gra ...
- SpringMVC中的适配器
适配器模式(Adapter):将一个类的接口转换成客户希望的另外一个接口,Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以在一起工作 适用场景: 1.已经存在的类的接口不符合我们的需 ...
- 转:java c/s tomcat 三层架构
概述在c/s结构的发展历程中,产生了两层c/s结构和三层c/s结构之分.在两层c/s结构中,在信息管理系统的管理上主要分为客户端和数据库服务器. 缺点有两个: 1)开销高昂.在两层c/s结构中,为了维 ...
- Kotlin Reference (四) Basic Types
most from reference 基本类型 在kotlin中,一切都是对象,我们可以在任何变量上调用成员函数和属性.一些类型可以具有特殊的内部表示:例如,数字.字符和布尔值都可以在运行时被表示为 ...
- Emgu cv 学习笔记
http://www.cnblogs.com/CoverCat/p/5003363.html emgu中imagebox与picturebox imagebox 是emgu 设置好厚,新出现的控件 ...
- Uncaught TypeError: Cannot read property 'ownerDocument' of null
/********************************************************************* * Uncaught TypeError: Cannot ...
- Linux 交换eth0和eth1
一.参考文档: 如何交换eth0和eth1? http://bbs.chinaunix.net/archiver/tid-2026056.html 二.具体操作 #echo `ifconfig -a` ...