Lombok常用注解
文章目录
- 一、简介
- 二、Idea中配置
- 三、Maven中配置
- 四、相应注解
- 1、@Data
- 2、@RequiredArgsConstructor
- 3、@AllArgsConstructor
- 4、@NoArgsConstructor
- 5、@Getter/@Setter:
- 6、@ToString
- 7、@EqualsAndHashCode
- 8、@Builder
- 9、@NonNull
- 10、@Log
- 11、@Slf4j
- 12、@Log4j2
- 13、@SneakyThrows
- 14、@Cleanup
- 15、@Synchronized
- 16、@SneakyThrows
- 五、XMind整理
一、简介
官网
https://projectlombok.org/
二、Idea中配置
三、Maven中配置
<dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.22</version>
</dependency>
四、相应注解
1、@Data
作用位置: 类上(实体类)
用途:
是1个注解集合:
- @ToString
- @EqualsAndHashCode
- @Getter
- @Setter
- @RequiredArgsConstructor
案例:
@Data
public class User {private String name;private int age;private String address;
}
2、@RequiredArgsConstructor
作用位置: 类上(实体类)
用途:
注解 集合:
- @AllArgsConstructor
- @NoArgsConstructor
案例:
@RequiredArgsConstructor
public class User {private String name;private int age;private String address;
}
3、@AllArgsConstructor
作用位置: 类上(实体类)
用途: 生成全参构造器
案例:
@AllArgsConstructor
public class User {private String name;private int age;private String address;
}
4、@NoArgsConstructor
作用位置: 类上(实体类)
用途: 生成无参构造器
案例:
@NoArgsConstructor
public class User {private String name;private int age;private String address;
}
5、@Getter/@Setter:
作用位置: 类上(实体类)、成员变量
用途:
作用类上:生成所有成员变量的getter/setter
方法
成员变量:生成该成员变量的getter/setter
方法
案例:
@Getter
@Setter
public class User {private String name;private int age;private String address;
}
6、@ToString
作用位置: 作用于类。
用途: 覆盖默认的toString()
方法。
案例:
@ToString
public class User {private String name;private int age;private String address;
}
7、@EqualsAndHashCode
作用位置: 作用于类
用途: 覆盖默认的equals和hashCod
案例:
@EqualsAndHashCode
public class User {private String name;private int age;private String address;
}
8、@Builder
作用位置: 作用于类上
用途: 将类转变为建造者模式
案例:
import lombok.Builder;@Builder
public class User {private String name;private int age;private String address;
}public void test() {User build = User.builder().name("张三").age(18).address("北京").build();
}
9、@NonNull
作用位置: 成员变量和参数中
用途: 标识不能为空,否则抛出空指针异常
案例:
public NonNullExample(@NonNull Person person) {super("Hello");this.name = person.getName();
}
10、@Log
作用位置: 作用于类上
用途: 生成日志变量。针对不同的日志实现产品,有不同的注解
java.util.logging.Logger
java.util.logging.Logger#getLogger(java.lang.String)
@CommonsLog
@Log4j
@Log4j2
@Slf4j
@XSlf4j
@JBossLog
@Flogger
@CustomLog
案例:
@Log
public class Test {public void test() {}
}
11、@Slf4j
作用位置: 类
用途: 表明使用slf4j
日志门面
案例:
@Slf4j
public class LogExampleOther {public void test() {log.error("Something else is wrong here");}
}
12、@Log4j2
作用位置:
用途:
- 自动关闭资源
- 针对实现了java.io.Closeable接口的对象有效,如:典型的IO流对象
案例:
@Log4j2
public class LogExampleOther {public void test() {log.error("Something else is wrong here");}
}
13、@SneakyThrows
作用位置:
用途: 可以对受检异常进行捕捉并抛出
案例:
import lombok.SneakyThrows;public class SneakyThrowsExample implements Runnable {@SneakyThrows(UnsupportedEncodingException.class)public String utf8ToString(byte[] bytes) {return new String(bytes, "UTF-8");}@SneakyThrowspublic void run() {throw new Throwable();}
}
14、@Cleanup
作用位置:
案例:
import lombok.Cleanup;
import java.io.*;public class CleanupExample {public static void main(String[] args) throws IOException {@Cleanup InputStream in = new FileInputStream(args[0]);@Cleanup OutputStream out = new FileOutputStream(args[1]);byte[] b = new byte[10000];while (true) {int r = in.read(b);if (r == -1) break;out.write(b, 0, r);}}
}
15、@Synchronized
- 作用于方法级别,可以替换synchronize关键字或lock锁
- 用处不大
16、@SneakyThrows
使用位置: 方法
作用: 可以将方法中的代码用 try-catch 语句包裹起来,捕获异常并在 catch 中用 Lombok.sneakyThrow(e) 把异常抛出,可以使用 @SneakyThrows(Exception.class) 的形式指定抛出哪种异常。
案例:
import lombok.SneakyThrows;public class SneakyThrowsExample implements Runnable {@SneakyThrows(UnsupportedEncodingException.class)public String utf8ToString(byte[] bytes) {return new String(bytes, "UTF-8");}@SneakyThrowspublic void run() {throw new Throwable();}
}
效果:
import lombok.Lombok;public class SneakyThrowsExample implements Runnable {public String utf8ToString(byte[] bytes) {try {return new String(bytes, "UTF-8");} catch (UnsupportedEncodingException e) {throw Lombok.sneakyThrow(e);}}public void run() {try {throw new Throwable();} catch (Throwable t) {throw Lombok.sneakyThrow(t);}}
}
五、XMind整理
地址
https://download.csdn.net/download/weixin_44624117/87738347