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/