为了账号安全,请及时绑定邮箱和手机立即绑定

Lombok安装及使用详解——沧海一米

标签:
Java MongoDB Html5

1. Lombok简介

1.1 是什么

官网地址: 官网
官方介绍:
Project Lombok is a java library that automatically plugs into your editor and build tools, spicing up your java.
Never write another getter or equals method again, with one annotation your class has a fully featured builder, Automate your logging variables, and much more.

大概的意思:Lombok是一个Java库,能自动插入编辑器并构建工具,简化Java开发。通过添加注解的方式,不需要为类编写getter或eques方法,同时可以自动化日志变量。

大白话就是:以前我们创建一个Java类,需要提供getter/setter/toString等繁琐的样板式代码,现在不需要了,加一个注解就搞定。官方demo:https://objectcomputing.com/resources/publications/sett/january-2010-reducing-boilerplate-code-with-project-lombok

1.2 到底该不该用 Lombok?

这个问题一直有争议,爱它的人爱的要死,恨它的人恨地要死。

正方观点 反方观点
代码干净整洁,工作量大大降低 强侵入性,强 X 队友,一人用都得用,否则编译通不过
代码可读性增强,保持代码风格一致 失去了封装意义,因为有些属性不一定想提供公共的getter/setter方法
Bean修改后,不需要修改模板化代码 IDE和JDK升级存在破裂的风险

笔者观点中立,其它队友用就用,不用也影响不大。

2. 安装

笔者使用环境:jdk1.8 + idea2018+maven3.5.2

2.1 引入maven依赖

<dependencies>
	<dependency>
		<groupId>org.projectlombok</groupId>
		<artifactId>lombok</artifactId>
		<version>1.18.12</version>
		<scope>provided</scope>
	</dependency>
</dependencies>

2.2 安装插件

使用Lombok还需要给IDE安装插件,这也是说它会强X队友的原因。笔者使用的是idea,使用其它IDE的盆友自行Google。

打开idea的File->settings菜单,如图所示,点击Install安装

因兼容问题,2018版及以上直接安装Lombok插件可能会出现问题,若无法安装请点击这里查看解决方法

在这里插入图片描述

3. 常用注解使用

3.1 @Getter / @Setter注解

使用方法如图所示:在这里插入图片描述

3.2 @toString注解

自动生成toString代码,并且修改属性后,不需要再修改。
在这里插入图片描述

3.3 @Data注解

@Data 注解在类,生成setter/getter、equals、canEqual、hashCode、toString方法,如为final属性,则不会为该属性生成setter方法。
在这里插入图片描述

3.4 其它注解
  • @EqualsAndHashCode 注解在类,生成hashCode和equals方法。
  • @NoArgsConstructor 注解在类,生成无参的构造方法。
  • @RequiredArgsConstructor 注解在类,为类中需要特殊处理的字段生成构造方法,比如final和被@NonNull注解的字段。
  • @AllArgsConstructor 注解在类,生成包含类中所有字段的构造方法。
  • @Slf4j 注解在类,生成log变量,严格意义来说是常量。private static final Logger log = LoggerFactory.getLogger(UserController.class);

4. Lombok工作原理

Java编译过程大致可以分为3个过程:

  1. 解析与填充符号表过程。
  2. 插入式注解处理器的注解处理过程。
  3. 分析与字节码生成过程。

Lombok本质上就是一个实现了“JSR 269 API”的程序。在javac的过程中,Lombok会在上述第2个步骤根据Lombok注解,修改语法树(AST),从而给class增加新的节点(代码块)。

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
JAVA开发工程师
手记
粉丝
1
获赞与收藏
0

关注作者,订阅最新文章

阅读免费教程

  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消