Lombok 用法

Lombok像语法糖一样简化语法,如果团队中有人用,那就大家就都得一起用了。

要在 project 中使用 lombok,除了要在 maven 中加入 lombok dependency,还要安裝 Intellij lombok 插件

1. 加入maven dependency

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.18.12</version>
</dependency>

2. 在 Intellij 中安裝 lombok 插件

1. @Getter/@Setter

自动产生 getter/setter

2. @ToString

自动产生 override toString() 方法,会打印出所有变量

3.@EqualsAndHashCode

自动生成equals(Object other)和hashcode()方法,包括所有非静态变量和非瞬时的变量

如果某些变量不想要加进判断,可以通过排除排除,也可以使用指定某些细分

4. @ NoArgsConstructor,@ AllArgsConstructor,@ RequiredArgsConstructor

这三个很像,都是在自动生成该类的构造函数,而不只是在生成的构造函数的参数不一样而已

@NoArgsConstructor:生成一个没有参数的constructor

建议用了@ AllArgsConstructor注解前面一定要加上@NoArgsConstrcutor空构造器

@RequiredArgsConstructor:生成一个包含“特定参数”的构造函数,特定参数指的是那些有加上final修饰词的变量们

补充一下,如果所有的变量都是正常的,都没有用final修饰的话,那就会生成一个没有参数的构造函数


5. @Data

懒人包,只要加了@Data这个注解,等于同时加了以下注解

@ Getter 和 @ Setter

@ToString

@EqualsAndHashCode

@RequiredArgsConstructor


6. @Value

也是懒人包,但是他会把所有的变量都设成final的,其他的就跟@Data一样,等于同时加了以下注解

@Getter(注意没有setter)

@ToString

@EqualsAndHashCode

@RequiredArgsConstructor

注意:另外注意一下,此lombok的注解@Value和另一个Spring的注解@Value撞名,在import时不要import错了


7. @Builder

自动生成流式 set 值写法,从此之后再也不用写一堆 setter 了

注意,虽然只要加上@Builder 注解,我们就能够用流式写法快速设定Object 的值,但是setter 还是必须要写不能省略的,因为Spring 或是其他框架有很多地方都会用到Object 的getter/setter对他们取值/赋值

所以通常是 @Data 和 @Builder 会一起用在同个类上,既方便我们流式写 code,也方便框架做事

@Data
@Builder
public class User {
    private Integer id;
    private String name;
}

8. @Slf4j

自动生成该类的 log 静态常量,要打日志就可以直接打,不用再手动 new log 静态常量了

除了 @Slf4j 之外,lombok 也提供其他日志框架的变种注解可以用,像是 @Log、@Log4j…等,他们都是帮我们创建一个静态常量 log,只是使用的 library 不一样而已

@Log //对应的log语句如下
private static final java.util.logging.Logger log = java.util.logging.Logger.getLogger(LogExample.class.getName());
@Log4j //对应的log语句如下
private static final org.apache.log4j.Logger log = org.apache.log4j.Logger.getLogger(LogExample.class);

SpringBoot默认支持的就是 slf4j + logback 的日志框架,所以也不用再多做啥设定,直接就可以用在 SpringBoot project上,log 系列注解最常用的就是 @Slf4j

本文来源:https://kucw.github.io/blog/2020/3/java-lombok/

评论区
登陆 后评论!