引言
此文为简单的Lombok 演示。
Lombok是一个可以通过简单的注解形式来帮助我们简化消除一些必须有但显得很臃肿的Java代码的工具,通过使用对应的注解,可以在编译源码的时候生成对应的方法。简而言之,一句话就是:通过简单的注解来精简代码达到消除冗长代码的目的。
官网:https://projectlombok.org/
GitHub:https://github.com/rzwitserloot/lombok
一、Lombok的优点
- 提高编码效率
- 使代码更简洁
- 消除冗长代码
- 避免修改字段名字时忘记修改方法名
二、如何使用
2.1 前期准备
在maven中央仓库中搜索lombok依赖,官方说maven 仓库和官方下载的jar包是一样的,所以,我们只需要下载maven依赖即可:
<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
<dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.8</version><scope>provided</scope>
</dependency>
然后,我们还需要去本地仓库双击jar 包安装一下,这一步主要是对 IDE进行lombok 的插件安装
安装完成后,需要重启 IDE,才能生效。
2.2 实际应用
首先,我们来创建一个实体类 Dept:
package com.group.coursesystem.entity;public class Dept {private int deptId;private String deptName;}
使用Lombok 为我们提供的自动生成方法注解,观察 Eclipse 中的 Outline 视图:
无参构造器:
全参构造器:
get/set方法及 toString():
链式 set 方法设置:
三、代码测试
构造器测试:
get/set 方法测试,set 方法为链式调用:
自动变更方法名:
四、常用注解
注解 | 描述 |
---|---|
@Getter / @Setter | 可以作用在类上和属性上,放在类上,会对所有的非静态(non-static)属性生成Getter/Setter方法,放在属性上,会对该属性生成Getter/Setter方法。并可以使用该注解中的AccessLevel属性来指定Getter/Setter方法的访问级别。 |
@ToString | 生成toString方法,默认情况下,会输出类名、所有属性,属性会按照顺序输出,以逗号分割。可以使用该注解中的exclude属性来指定生成的toSpring方法不包含对象中的哪些字段,或者使用of属性来指定生成的toSpring方法只包含对象中的哪些字段 |
@EqualsAndHashCode | 默认情况下,会使用所有非瞬态(non-transient)和非静态(non-static)字段来生成equals和hascode方法,也可以使用exclude或of属性。 |
@NoArgsConstructor | 生成无参构造器 |
@RequiredArgsConstructor | 会生成一个包含标识了@NonNull注解的变量的构造方法。生成的构造方法是private,如果想要对外提供使用的话,可以使用staticName选项生成一个static方法。 |
@AllArgsConstructor | 生成全参构造器,当我们需要重载多个构造器的时候,Lombok就无能为力了。 |
@Slf4j | 该注解是用来解决不用每次都写 private static final Logger log = LoggerFactory.getLogger(XXX.class); 这句代码的。使用的日志框架是LogBack,可以为类生成名为 log 的Slf4j 日志对象,该对象是 static final 的 |
@Log4j | 该注解也是用来解决不用每次都写日志对象声明语句的,从字面上也可以看出,使用的日志框架是log4j |
@Data | 该注解是 @ToString、@EqualsAndHashCode注解,和所有属性的@Getter注解, 以及所有non-final属性的@Setter注解的组合,通常情况下,我们使用这个注解就足够了。 |
五、注意事项
注意,在Eclipse 或 IDEA 中,必须加入Lombok的插件,具体安装方法是双击你的 Lombok.jar 包,其内部集成了自动安装插件的程序,根据提示信息完成插件安装(官方标准步骤)。
如果是 maven 依赖的jar ,就可以去本地仓库中根据 GAV 坐标找到对应版本的 jar 包,如果是手动下载 jar包,也可以,它们是相同的,安装过程很快,几乎没有什么明显的提示,如果在会话框中看到"has installed" 字样,说明安装成功,成功后需要重启 Eclipse 。
Lombok既是一个IDE插件,也是一个项目要依赖的jar包。Lombok是依赖jar包的原因是因为编译时要用它的注解。是插件的原因是他要在编译器编译时通过操作AST(抽象语法树)改变字节码生成。也就是说他可以改变java语法.。他不像spring的依赖注入或者hibernate的orm一样是运行时的特性,而是编译时的特性。
另外,如果是 STS,官方说是可以支持,但是目前我的 STS 无法被 Lombok 检测程序检测到,因此无法安装并使用。具体的表现形式是注解可以使用,但是没有实际效果,或 Outline 视图没有变化(ps:很可能是因为我的STS是免安装版/便携版)。
注意,不必担心Lombok 只会在开发中生效 运行期不生效的问题。
参考:
《Lombok快速入门》
《Lombok Project》