需要安装idea插件
注解
(一)@Getter/@Setter
作用类上,生成所有成员变量的getter/setter方法;作用于成员变量上,生成该成员变量的getter/setter方法。可以设定访问权限及是否懒加载等。
@Getter(value = AccessLevel.PUBLIC)
@Setter(value = AccessLevel.PUBLIC)
public static class Person {
private String name;
private int age;
private boolean friendly;
}
public static class Animal {
private String name;
private int age;
@Getter @Setter private boolean funny;
}
(二)@ToString
作用于类,覆盖默认的toString()方法,可以通过of属性限定显示某些字段,通过exclude属性排除某些字段。
(三)@EqualsAndHashCode
(四)@NonNull
给方法参数增加这个注解会自动在方法内对该参数进行是否为空的校验,如果为空,则抛出NPE(NullPointerException)
(五)@NoArgsConstructor
(六)@RequiredArgsConstructor
生成包含final和@NonNull注解的成员变量的构造器;
(七)@AllArgsConstructor
(八)@Data
作用于类上,是以下注解的集合:@ToString @EqualsAndHashCode @Getter @Setter @RequiredArgsConstructor
(九)@Builder
(十)@Log
作用于类上,生成日志变量。针对不同的日志实现产品,有不同的注解:
@Log:
根据不同的注解生成不同类型的log对象,但是实例名称都是log,有六种可选实现类
@CommonsLog Creates log = org.apache.commons.logging.LogFactory.getLog(LogExample.class);
@Log Creates log = java.util.logging.Logger.getLogger(LogExample.class.getName());
@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);
(十一)@Cleanup
自动管理资源,用在局部变量之前,在当前变量范围内即将执行完毕退出之前会自动清理资源,自动生成try-finally这样的代码来关闭流。虽然自JDK7以来,原生引入了try—with—resource结构,但还是不如@Cleanup来的简洁。
@Cleanup
自动关闭资源,针对实现了java.io.Closeable接口的对象有效,如:典型的IO流对象
编译后结果如下:
(十二)@SneakyThrows
(十三)@Synchronized
用在方法上,将方法声明为同步的,并自动加锁,而锁对象是一个私有的属性$lock或$LOCK,而java中的synchronized关键字锁对象是this,锁在this或者自己的类对象上存在副作用,就是你不能阻止非受控代码去锁this或者类对象,这可能会导致竞争条件或者其它线程错误
(十四)@Getter(lazy=true)
新来个技术总监,禁止我们使用Lombok!
参考:
https://www.yuque.com/docs/share/83320db0-f823-41f5-8d99-0180f7290656?#