栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

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

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

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等繁琐的样板式代码,现在不需要了,加一个注解就搞定。

1.2 到底该不该用 Lombok?

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

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

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

2. 安装

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

2.1 引入maven依赖

	
		org.projectlombok
		lombok
		1.18.12
		provided
	

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增加新的节点(代码块)。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/237095.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号