lombok的一些使用
1. maven依赖
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.12</version>
</dependency>
2. 在idea中下载lombok插件
(1)打开idea编辑器
(2)
(3)
因为我已经安装好了lombok插件;如果是没有安装的,就在Lombok后边会有Install,点击Install就可以安装了,但是需要注意的是:安装好了,需要关闭重新启动一下idea编辑器
3. Lombok常用的注解
(1)@Getter/@Setter
作用范围:类上或类中字段上,会自动生成getter/setter的方法。
(2)@Data、@Value
@Data注解在类上,将类提供的所有属性都添加get、set方法,并添加equals、hashCode、toString方法
@Value注解用于修饰类,相当于是@Data的不可变形式,因为字段都被修饰为private和final,默认的情况下不会生成settter。
(3)@NoArgsConstructor、@AllArgsConstructor、@RequiredArgsConstructor
@NoArgsConstructor:生成无参的构造方法。
@AllArgsConstructor:生成该类下全部属性的构造方法。
@RequiredArgsConstructor:生成该类下被final修饰或者non-null字段生成一个构造方法。
场景:
在springboot中,对于一个bean类,注入其他bean的时候,常见的是使用@Autowired,实际上也可以使用构造函数注入,这个时候就可以使用@AllArgsConstructor或者@RequiredArgsConstructor来代替。
(4) @ToString
作用范围:类上,会自动生成toString的方法。
(5)@Slf4j
作用范围:类上,在需要打印日志的类中使用,可以直接log.info()等日志输出。
以上这些都是我在工作比较经常使用的。
@Slf4j这个注解在使用时别输出什么重要信息
(6)@EqualsAndHashCode
任何类定义都可以使用@EqualsAndHashCode进行注释,可以在类中生成equals()和hashCode()方法的。
(7) @Cleanup
可以使用@Cleanup以确保在代码执行路径退出当前作用域之前自动清除给定资源。可以通过使用@Cleanup注释任何局部变量声明来执行此操作:
@Cleanup InputStream in = new FileInputStream(“D://file”);
import java.io.*;
public class Test {
public static void main(String[] args) {
try {
@Cleanup
ByteArrayOutputStream baos = new ByteArrayOutputStream();
baos.write(new byte[] {'Y','e','s'});
System.out.println(baos.toString());
} catch (Exception e) {
e.printStackTrace();
}
}
}
(8) @Builder
只能标注到类上,将生成类的一个当前流程的一种链式构造工厂User user = User.builder().mobile("").email("").build();
(9) @Accessors
只能标注到类上,可以减少书写代码,支持链式操作,同时减少多余对象的创建,builder类元信息又可以减少
示例:实体类加上 @Accessors(chain = true) 注解User user = new User().setEmail("").setMobile("");
(10) @NonNull
该注解快速判断是否为空,如果为空的话会抛出java.lang.NullPointerException异常。
(11)@Synchronized
注解自动添加到同步机制,生成的代码并不是直接锁方法,而是锁代码块, 作用范围是方法上。
(12)@SneakyThrows
该注解就是为了省略try{}catch{}的,如:
之前的代码都是
public class Student {
public String study(){
try{
throw new Throwable();
}catch(Throwable e) {
e.printStackTrace();
}
}
}
现在就可以写成
public class Student {
@SneakyThrows
public String study(){
throw new Throwable();
}
}