lombok插件
lombok是一款Java实用工具,可用来帮助开发人员消除Java的冗长,尤其是对于简单的Java对象(POJO)。
在实际开发中,是不是发现经常需要变更model类、vo类、dto等一些实体类,随便编码工具Eclipse或者idea等都可以一键重新生成getter或setter方法,但是做起来依然很繁琐。
有没有更好更优雅的解决方法呢,lombok就是答案。lombok采用注解的方式,消除代码中的构造方法,getter/setter等代码,使我们写的类更加简洁,修改起来更加方便快捷。
当然,这带来的副作用就是不易阅读,不过,对于本来就简单的getter/setter之类,我觉得并不是很大的影响。
一、lombok安装
工欲善其事,必先利其器,要使用lombok,我们先要给我们的编辑器安装lombok插件。这里主要介绍下eclipse与IDEA集成lombok。
1.eclipse安装lombok
首先到官网下载插件,地址:http://projectlombok.org/
下载按成后,可以看到lombok本身就是一个java的jar程序。所以可以直接选择在lombok的位置执行java -jar lombok.jar,或者直接双击lombok.jar,然后点击install/update即可安装。安装成功后eclipse目录下的eclipse.ini文件中将会有lombok.jar的路径。
既然jar的功能是生成路径,那其实我们也可以选择手动安装,直接将lombok.jar包拷贝到eclipse的安装目录下,并且在eclipse.ini添加lombok的路径。
1.IDEA安装lombok
在IDEA中选择File->Setting->Plugins搜索Lombok Plugin,点击install,安装完成后重启IDEA即可。
二、lombok使用
在安装插件后,就开始来体验lombok吧,要想使用lombok,只需要在pom文件(maven项目)中引入依赖即可,然后就可以愉快的玩耍了。
下面我们就来看看lombok常用的一些注解。
随便常见一个工程,引入lombok依赖。
[email protected]/@Setter
这个从名字上大概就已经可以看出大概个用法,就是提供getter/setter方法,从而避免了修改字段需要从新生成getter/setter方法。这个注解可以使用在字段上,提供单个字段的getter/setter,也可以直接写在类上,提供整个类所有非静态成员变量的getter/setter。
[email protected]/@EqualsAndHashCode
同样故名思议,这也是lombok的特点,看名字就知道用法,这两个注解就是生成toString,equals和hashcode方法。同时后者还会生成一个canEqual方法,用于判断某个对象是否是当前类的实例,生成方法时只会使用类中的非静态和非transient成员变量 。
那如果不想使用默认的所有字段呢,这两个注解也提供了of来指定包含,或者使用exclude属性来指定排除。
[email protected]/@AllArgsConstructor/@RequiredArgsConstructor
这三个注解就是提供构造方法,NoArgs表示无参数,AllArgs表示全部参数,而Required表示可以选的。
@NoArgsConstructor和@AllArgsConstructor直接使用即可,但@RequiredArgsConstructor怎么使用呢,它怎么知道我要使用哪些参数的,所以这个注解必须和另一个注解配合使用,那就是@NonNull,它用来指定构造参数需要使用那些个参数。
@RequiredArgsConstructor在使用会有一点小bug,可以看到此时我们是没有无参的构造方法,且代码提示也不包含无参数的构造方法,但是并不影响调用,也是可以正常运行使用的。
[email protected]/@Value
@Data注解综合前面的@Getter/@Setter,@ToString/@EqualsAndHashCode,@NoArgsConstructor和@RequiredArgsConstructor ,所以一般的po或者vo类,这一个注解就ok了。
@Value注解和@Data类似,区别在于它会把所有成员变量默认定义为private final修饰,并且不会生成set方法。
@NonNull除了与@RequiredArgsConstructor结合使用,还可以用来做空校验,当使用@NonNull注解的参数为空时,则会抛出异常。
在很多设计资源读取时,我们在资源文件使用完之后都需要手动去关闭资源,一般做法是使用try……finally,而@Cleanup就相当于这种写法,会在资源使用后关闭资源。
编写代码时,我们常常要处理各种异常,@SneakyThrows则可以自动生成try……catch代码块,然后对于6的代码,我们就可以改写如下,是不是瞬间清爽了很多,但是@SneakyThrows是包裹整个方法,如果只想包裹方法里面部分代码语句,那只能自己动手了。
[email protected]/@Slf4j/@Log4j等
这类注解就是生成默认生成一个log日志对象,供程序中调用,具体使用什么日志,得取决于项目采用的日志系统。
这就是关于lombok的一部分注解,更多注解和功能大家可以自行摸索或者翻阅资料。最后,友情提示,用lombok一时爽,一直用lombok一只爽。