学习IntelliJ IDEA之lombok插件

IDEA
placeholder image
admin 发布于:2019-05-07 22:03:00
阅读:loading

lombok是什么(闲扯)

某对于IDEA的掌握程度算是有点深了,本次分享lombok插件的安装与使用,先说一下我理解的这个插件是干嘛的,它分为两个部分:IDE编译插件与代码API,代码API主要是提供注解为主,根据注解标识一些类再配合IDE的编译插件生成一些简单而又常见的代码块,如:get/set属性方法、Log输出对象、构造函数、equals/hashCode等等。

先拿这个日志输出对象来讲,真心的很麻烦,正常情况多记录日志是应该的,但是想要让日志记录的类路径比较准确就得去定义一个Logger输出对象,每个类都需要定义这么个破玩意,或者可以封装一些Common.log函数去方便调用(省略定义);还有一种是通过当前线程的上下文堆栈获取当前线程的类字节码栈对象,找到这个对象的类型来作为我们定义的输出类对象(其实这种方法也还是比较靠谱的,参考代码为:Thread.currentThread().getStackTrace());再有就是本文所讲的lombok插件来实现了,不讲它的具体实现,且看示例分析。

lombok能干什么

(1)我们使用lombok帮助我们输出一些便捷的代码编译输出结果,换句话说它可以控制我们源代码的编译结果,方便我们的日常开发。

(2)另外,由于编码的复杂程度,它也只是控制在Javabean层面(get/set属性方法、Log输出对象、构造函数、equals/hashCode)、非空判断、IO的close等一些轻业务逻辑而又无技术含量的代码实现。

插件安装

IDEA插件安装不为本文的重点内容,但仍然推荐使用离线的安装方式,lombok官网下载地址为:http://plugins.jetbrains.com/plugin/6317-lombok/versions 通过访问该地址下载与你IDEA版本一致的插件版本进行安装,安装过程不再赘述。

代码集成

同前文说的一致,需要引入代码API的jar环境,参考maven地址为:

<dependency>
        <
groupId>org.projectlombok</groupId>
        <
artifactId>lombok</artifactId>
        <
version>1.18.6</version>
        <
scope>test</scope>
   </
dependency>

一些简单示例

image.png

(slf4j输出日志)

image.png

(log4j输出日志)

image.png

(getter生成)

image.png

(setter生成)

image.png

(getter/setter生成)

image.png

(toString函数)

image.png

(toString包含部分)

image.png

(toString排除属性)

image.png

(Equals与hashCode)

image.png

(构造函数:无参数、部分参数、全参数)

image.png

(构造函数、equals、hashCode、toString、get/set)

其它说明

更多的不再列举了,以上是按我个人偏好整理出来的,其它更多的实现则应该以它API中提供的注解实现为准。

缺点分析

① 写到这里,我似乎已经感觉到有这么接问题存在了,本人并未使用它用户实际工作的实践中,也许在代码调试上会出现障碍,原因是它的源代码与编译的存在一定区别;另外在编码要求方面需要掌握lombok方面的技能,否则可能会出现他人阅读起来的障碍;同时由于使用它会减少代码产出量,在某些时候统计代码产出时会拉低数量吧。也许最重要的缺点可能是一人使用它则全项目组都得使用它,要不然你没有这个插件环境肯定是会出现问题的。

② 不知道这点算不算是缺点,没尝试过 Jenkins 自动化打包是否支持;

③ 项目代码中存在非常多的Logger输出器,与一个module一个的模式背道而驰; 

代码下载

本示例的idea工程下载 lombok.zip

20190903 增加

@Accessors(chain=true) 链式属性方法


上述许多内容已经过时和过期了,留存本篇文章仅为方便个人查看,原始文章的信息参考:

原始链接:https://www.chendd.cn/information/viewInformation/other/305.a

最后更新:2019-05-07 22:03:00

访问次数:882

评论次数:1+

点赞个数:6,[相当给力:5,路过一下:1]

 点赞


 发表评论

当前回复:作者

 评论列表


留言区