Lombok 笔记

Lombok使用

Lombok 可以通过注解的形式,来帮助我们在开发的时候省略掉一些重复的工作。比如设置 get、set 方法,设置无参构造函数或者全参构造函数。

如果使用的是 IntelliJ IDEA,可以先安装 Lombok Plugin 插件。 最新版已经自带插件可以支持。

然后在项目中引入 jar 文件,如果使用 Maven 构建项目,可以通过在pom.xml中添加以下代码来引用。

1
2
3
4
5
6
<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.20</version>
</dependency>

引入之后就可以在项目中使用 Lombok 了。

注解

@val

可以用val来声明一个final变量,Lombok 会自动推测出变量类型,并且是不可更改的。

@NonNull

在参数前面加上 @NonNull 可以不用考虑变量为空的情况,不会抛出异常。类似于 Javascript 中的?.

@Cleanup

在资源变量声明前加上该注解,则使用完毕后不用显示调用 close 方法或者在 finally 块中关闭。

@Getter / @Setter

在变量前加上该注解,不用手动书写 get 或 set 方法,Lombok 编译时自动添加。

@ToString

在变量前加上该注解,自动重写 toString 方法。

@EqualsAndHashCode

在类前面加上该注解,自动重写 equals 方法和 hashCode 方法。

@NoArgsConstructor, @RequiredArgsConstructor and @AllArgsConstructor

在类前面加上该注解,自动添加无参数构造函数、指定参数构造函数和全参数构造函数。

@Data

在类前面加上该注解,自动添加变量的 get、set 方法。重写 equals、hashCode 和 toString 方法。

@Value

在类前面加上该注解,自动将变量变为不可变变量并添加 get 方法和构造函数等。

@Builder

在类前面加上该注解,只用声明变量,自动生成各种访问的 API。

@SneakyThrows

在方法前面加上该注解,自动捕获异常并抛出。

@Synchronized

在方法前面加上该注解,自动添加同步块。

@Getter(lazy=true)

在变量前面加上该注解,可以防止多次求相同值,并且在多个请求时只做一次求值。

@Log

省去声明 log 变量的麻烦,以下注解等价于后面的声明。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
@CommonsLog
Creates private static final org.apache.commons.logging.Log log = org.apache.commons.logging.LogFactory.getLog(LogExample.class);
@JBossLog
Creates private static final org.jboss.logging.Logger log = org.jboss.logging.Logger.getLogger(LogExample.class);
@Log
Creates private static final java.util.logging.Logger log = java.util.logging.Logger.getLogger(LogExample.class.getName());
@Log4j
Creates private static final org.apache.log4j.Logger log = org.apache.log4j.Logger.getLogger(LogExample.class);
@Log4j2
Creates private static final org.apache.logging.log4j.Logger log = org.apache.logging.log4j.LogManager.getLogger(LogExample.class);
@Slf4j
Creates private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(LogExample.class);
@XSlf4j
Creates private static final org.slf4j.ext.XLogger log = org.slf4j.ext.XLoggerFactory.getXLogger(LogExample.class);
分享