您的位置 首页 >  博文

Lombok插件的安装与使用

背景

我们在开发过程中,通常都会定义大量的JavaBean,然后通过IDE去生成其属性的构造器、getter、setter、equals、hashcode、toString方法,当要对某个属性进行改变时,比如命名、类型等,都需要重新去生成上面提到的这些方法,那Java中有没有一种方式能够避免这种重复劳动的工具呢?答案是有,我们来看一下下面这张图,右面是一个简单的JavaBean,只定义了两个属性,在类上加上了@Data,从左面的结构图上可以看到,已经自动生成了上面提到的方法。

a.png

Lombok简介

Lombok是一个可以通过简单的注解形式来帮助我们简化消除一些必须有但显得很臃肿的Java代码的工具,通过使用对应的注解,可以在编译源码的时候生成对应的方法。

官方地址:https://projectlombok.org/

github地址:https://github.com/rzwitserloot/lombok

注解介绍

下面只是介绍了几个常用的注解,更多的请参见https://projectlombok.org/features/index.html。

  • @Getter / @Setter
    可以作用在类上和属性上,放在类上,会对所有的非静态(non-static)属性生成Getter/Setter方法,放在属性上,会对该属性生成Getter/Setter方法。并可以指定Getter/Setter方法的访问级别。

  • @EqualsAndHashCode
    默认情况下,会使用所有非瞬态(non-transient)和非静态(non-static)字段来生成equals和hascode方法,也可以指定具体使用哪些属性。

  • @ToString
    生成toString方法,默认情况下,会输出类名、所有属性,属性会按照顺序输出,以逗号分割。

  • @NoArgsConstructor, @RequiredArgsConstructor and @AllArgsConstructor
    无参构造器、部分参数构造器、全参构造器,当我们需要重载多个构造器的时候,Lombok就无能为力了。

  • @Data
    @ToString, @EqualsAndHashCode, 所有属性的@Getter, 所有non-final属性的@Setter和@RequiredArgsConstructor的组合,通常情况下,我们使用这个注解就足够了。

Lombok原理

了解了简单的使用之后,现在应该比较好奇它是如何实现的。整个使用的过程中,只需要使用注解而已,不需要做其它额外的工作,那玄妙之处应该是在注解的解析上。JDK5引入了注解的同时,也提供了两种解析方式。

运行时解析

运行时能够解析的注解,必须将@Retention设置为RUNTIME,这样可以通过反射拿到该注解。java.lang.reflect反射包中提供了一个接口AnnotatedElement,该接口定义了获取注解信息的几个方法,Class、Constructor、Field、Method、Package等都实现了该接口,大部分开发者应该都很熟悉这种解析方式。

boolean isAnnotationPresent(Class<? extends Annotation> annotationClass);<T extends Annotation> T getAnnotation(Class<T> annotationClass);Annotation[] getAnnotations();Annotation[] getDeclaredAnnotations();

Lombok问题

无法支持多种参数构造器的重载。

Lombok使用(Idea)

IDEA中添加Lombok插件, File -> Setting -> Plugins 搜索Lombok Plugin, 点击Install,安装完成后重启IDEA。

b.png

Lombok使用(Eclipse)

  1. 下载lombok.jar,lombok.jar官方下载地址:https://projectlombok.org/download

  2. 在下载jar包路径下,使用Java命令,去安装(可以直接双击jar包来安装)

java -jar lombok-1.18.6.jar
  1. 关闭弹出的警告窗口,点击 Specify location..

    c.png

  2. 选择Eclipse的安装目录

    311199-20190411181619207-1111801191.png

  3. 点击Install / Update

    311199-20190411181630122-1078641581 (1).png

  4. 点击Quit Installer,完成安装

    311199-20190411181642755-1981329497.png

  5. 安装完成之后,请确认eclipse安装路径下是否多了一个lombok.jar包,并且其配置文件eclipse.ini中是否 添加了如下内容:

-javaagent:D:\build-env\eclipse\lombok.jar

311199-20190411181719188-1708164014.png

311199-20190411181803186-1177367543.png

  1. 重启eclipse或myeclipse

项目中使用Lombok

<!-- Lombok支持 --><dependency>    <groupId>org.projectlombok</groupId>    <artifactId>lombok</artifactId>    <scope>provided</scope></dependency>


关于作者: 王俊南(Jonas)

昨夜寒蛩不住鸣。惊回千里梦,已三更。起来独自绕阶行。人悄悄,帘外月胧明。 白首为功名。旧山松竹老,阻归程。欲将心事付瑶琴。知音少,弦断有谁听。

热门文章