提高开发效率—Lombok插件
网站首页 文章专栏 提高开发效率—Lombok插件
提高开发效率—Lombok插件
编辑时间:2019-05-06 18:10 作者:毛毛小妖 浏览量:136 评论数:0

一、Lombok是什么

Lombok能通过注解的方式,在编译时自动为属性生成构造器、getter/setter、equals、hashcode、toString方法。这样我们就不用手动去构建这些代码了,使代码看起来更简洁些,维护起来也容易。那这个插件到底靠谱么?通过验证,虽然我们没有自己写getter/setter这些,但是编译生成的字节码文件中有getter和setter方法,所以完全不必担心啦,放心使用吧。相信我,你会爱上它的。

二、Lombok安装

说了半天它的好处,接下来让我们愉快的用起来吧。首先当然要去下载Lombok啦,点我去下载,接下来就跟着官网文档开始安装吧。什么?看不懂,没关系,我来帮你(我使用的是win10系统,其他系统请自行百度啦),前提是需要配好 java 环境变量,这个就不说啦,是个学过java的都会。

1、eclipse下安装

下载 jar包之后在 jar包所在的位置处按住 shift 点击鼠标右键,选择“在此处打开 powershell 窗口,输入 java -jar .\lombok.jar。如图:

回车,出现如下界面:

点击图中的按钮,跟着提示去寻找我们eclipse的的安装目录,选中eclipse.exe。

点击 会出现确认信息如图所示:

最后点击,我们的安装就完成啦。

2、IntelliJ IDEA 下安装

IntelliJ IDEA 下安装就比较简单啦,官网的步骤也比较简单易懂:

1、Go to File > Settings > Plugins
2、Click on Browse repositories...
3、Search for Lombok Plugin
4、Click on Install plugin
5、Restart IntelliJ IDEA

3、直接把Lombok加入我们的项目中

如果项目允许的话,直接在我们的项目中引用最为简便啦,只需跟引用其他jar包一样引入Lombok的jar包就可以啦:

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

三、Lombok怎么用

重点来啦,安装好了,那怎么用呢。小伙伴们不要着急,待我慢慢道来。

Lombok使用注解的方式来工作的,首先我们来看一下它提供的常用注解:

序号 注解 说明
1 @Data 注解在类上;包含了@ToString,@EqualsAndHashCode,@Getter / @Setter和@RequiredArgsConstructor的功能,提供类所有属性的 getter 和 setter 方法,此外还提供了equals、canEqual、hashCode、toString 方法
2 @Setter 注解在属性上;为属性提供 setter 方法
3 @Getter 注解在属性上;为属性提供 getter 方法
4 @ToString 注解在类上;生成toString()方法,默认情况下,它会按顺序(以逗号分隔)打印你的类名称以及每个字段。可以这样设置不包含哪些字段@ToString(exclude = "id") / @ToString(exclude = {"id","name"})
5 @EqualsAndHashCode 注解在类上;生成hashCode()和equals()方法,默认情况下,它将使用所有非静态,非transient字段。但可以通过在可选的exclude参数中来排除更多字段。或者,通过在parameter参数中命名它们来准确指定希望使用哪些字段。
6 @NonNull 注解在属性上;标识属性是不能为空,为空则抛出异常。
7 @Slf4j 注解在类上;根据用户实际使用的日志框架生成log日志对象。
8 @Log4j 注解在类上;为类提供一个 属性名为log 的 log4j 日志对象
9 @NoArgsConstructor 注解在类上;为类提供一个无参的构造方法。当类中有final字段没有被初始化时,编译器会报错,此时可用@NoArgsConstructor(force = true),然后就会为没有初始化的final字段设置默认值 0 / false / null。对于具有约束的字段(例如@NonNull字段),不会生成检查或分配,因此请注意,正确初始化这些字段之前,这些约束无效。
10 @AllArgsConstructor 注解在类上;为类提供一个全参的构造方法。默认生成的方法是public的,如果要修改方法修饰符可以设置AccessLevel的值,例如:@Getter(access = AccessLevel.PROTECTED)
11 @RequiredArgsConstructor 注解在类上;会生成构造方法(可能带参数也可能不带参数),如果带参数,这参数只能是以final修饰的未经初始化的字段,或者是以@NonNull注解的未经初始化的字段。@RequiredArgsConstructor(staticName = "of")会生成一个of()的静态方法,并把构造方法设置为私有的。

注意:

日常开发中,尽量少直接使用@Data注解。而是按需使用,可以换成@Setter、@Getter、@NoArgsConstructor、@AllArgsConstructor、@ToString。

具体原因我找了一篇博客,大家可以移步这里看看

四、Lombok工作原理

用完这个插件,瞬间提高了我们的开发效率,也减少了大量的代码量。那我们来看看他是怎么实现的吧。我在网上找了一个图:

上图是 Lombok 处理流程,在Javac 解析成抽象语法树之后(AST), Lombok 根据自己的注解处理器,动态的修改 AST,增加新的节点(所谓代码),最终通过分析和生成字节码。

 

推荐文章
来说两句吧
最新评论
    还没有人评论哦,快来坐沙发吧!