lombok插件的基本使用与常用注解

导入架包或Maven添加依赖:
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.4</version>
          </dependency>

注解:
@NoArgsConstructor        创建无参构造器(如果类中含有final修饰的成员变量则无法使用)

@RequiredArgsConstructor    以类中所有带有@NonNull注解的或者带有final修饰的成员变量生成对应的构造方法

@AllArgsConstructor        全参构造器(不会把父类的属性加到构造器中)

@Cleanup            默认是调用资源的close()方法

@Data                效果等同于@Getter + @Setter + @ToString + @EqualsAndHashCode + @RequiredArgsConstructor    (不包括@NoArgsConstructor和@AllArgsConstructor)

@Value                和@Data类似,区别在于它会把所有成员变量默认定义为private final修饰,并且不会生成set方法

@ToString            toString()

@EqualsAndHashCode        equals和hashcode、canEqual方法

@Getter/@Setter            用在成员变量上为成员变量生成对应的get和set方法,用在类上面为此类里的所有非静态成员变量生成对应的get和set方法(如果是final变量,那就只会有get方法)

@NonNull            用在成员方法或者构造方法的参数前面,会自动产生一个关于此参数的非空检查,如果参数为空,则抛出一个空指针异常

@Log4j                用在类上相当于private static final org.apache.log4j.Logger log = org.apache.log4j.Logger.getLogger(类名.class);

Lombok这款插件依靠可插件化的Java自定义注解处理API(JSR 269: Pluggable Annotation Processing API)来实现在Javac编译阶段利用“Annotation Processor”对自定义的注解进行预处理后生成真正在JVM上面执行的“Class文件”
在Javac 解析成AST抽象语法树之后, Lombok 根据自己编写的注解处理器,动态地修改 AST,增加新的节点(即Lombok自定义注解所需要生成的代码),最终通过分析生成JVM可执行的字节码Class文件。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章