Lombok注解概览

什么是Lombok


  Lombok是一个java库,可以自动插入编辑器并构建工具,为您的java增添色彩。永远不要再写另一个getter或equals方法,使用一个注释,您的类具有一个功能齐全的构建器,自动化您的日志记录变量等等。

  Lombok官方网站

为什么用Lombok


减少大量工作量和维护难度的难度,加速开发。

Maven依赖配置


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

注解说明


注解 说明
@Getter&@Setter 用在 Java Bean 类或者字段上,无需生成 get/ set 方法,会自动生成所有的 get/ set 方法及一个默认的构造方法。
@ToString 使用在类上,相当于重写toString()方法,输出入blog=huangdayu
@NoArgsConstructor 用在类上,用来生成一个默认的无参构造方法。
@RequiredArgsConstructor 用在类上,必选参数构造器。使用类中所有带有 @NonNull 注解和 final 类型的字段生成对应的构造方法。
@AllArgsConstructor 用在类上,生成一个所有参数的构造方法,默认不提供无参构造方法。
@Data 等同于@Getter,@Setter,@RequiredArgsConstructor,@ToString,@EqualsAndHashCode注解的集合
@Value 用在类上,构建不可变的对象类,等同于@Getter ,@FieldDefaults(makeFinal=true, level=AccessLevel.PRIVATE) ,@AllArgsConstructor ,@ToString ,@EqualsAndHashCode的集合
@NonNull 用在属性上,用于字段的非空检查,如果传入到 set 方法中的值为空,则抛出空指针异常,该注解也会生成一个默认的构造方法。
Builder 用在类上,把我们的Bean类包装为一个构建者模式,编译时增加了一个Builder内部类和全字段的构造器。
@EqualsAndHashCode 用在类上,相当于重写equals()方法和hashCode()方法
@Cleanup 用在方法上,自动管理资源,用在局部变量之前,在当前变量范围内即将执行完毕退出之前会自动清理资源,自动生成try-finally这样的代码来关闭流
@Builder 用在类、构造器、方法上,为你提供复杂的builder APIs,让你可以像如下方式一样调用Person.builder().name(“A”).city(“B”).job(“B”).job(“C”).build();
@SneakyThrows 用在类上,自动抛受检异常,而无需显式在方法上使用throws语句
@Synchronized 用在方法上,将方法声明为同步的,并自动加锁,而锁对象是一个私有的属性$lock$LOCK,而java中的synchronized关键字锁对象是this,锁在this或者自己的类对象上存在副作用,就是你不能阻止非受控代码去锁this或者类对象,这可能会导致竞争条件或者其它线程错误
@Log 生成log对象,Creates log = java.util.logging.Logger.getLogger(LogExample.class.getName());
@CommonsLog Creates log = org.apache.commons.logging.LogFactory.getLog(LogExample.class);
@Log4j Creates log = org.apache.log4j.Logger.getLogger(LogExample.class);
@Log4j2 Creates log = org.apache.logging.log4j.LogManager.getLogger(LogExample.class);
@Slf4j Creates log = org.slf4j.LoggerFactory.getLogger(LogExample.class);
@XSlf4j Creates log = org.slf4j.ext.XLoggerFactory.getXLogger(LogExample.class);

参考文献


Lombok开发指南
推荐一款代码神器,代码量至少省一半!
Lombok:让JAVA代码更优雅

今日诗词

作者信息