zoukankan      html  css  js  c++  java
  • 什么是Lombok?

      官方介绍——Lombok项目是一个Java库,它会自动插入您的编辑器和构建工具中,从而为您的Java增光添彩。永远不要再写另一个getter或equals方法,带有一个注释的您的类有一个功能全面的生成器,自动化您的日志记录变量等等。理解一下,使用Lombok,通过注解类,让你不再需要编写getter、equals等方法,减少样板代码的编写。

    lombok的官方地址:https://projectlombok.org/

    lombok的Github地址:https://github.com/rzwitserloot/lombok

      Lombok的使用:

    、引入Lombok jar包

     Lombok的scope=provided,说明它只在编译阶段生效,不需要打入包中。事实正是如此,Lombok在编译期将带Lombok注解的Java文件正确编译为完整的Class文件。

    、开发工具中下载Lombok插件

      ide下载插件后在开发阶段ide可以识别Lombok注释,从而不会报错

    安装方法:点击File-- Settings设置界面,安装Lombok插件:

     点击File-- Settings设置界面,开启 AnnocationProcessors:

       开启该项是为了让Lombok注解在编译阶段起到作用。

    、Lombok的实现原理

      自从Java 6起,javac就支持“JSR 269 Pluggable Annotation Processing API”规范,只要程序实现了该API,就能在javac运行的时候得到调用。Lombok就是一个实现了"JSR 269 API"的程序。

    具体流程:

      1. javac对源代码进行分析,生成一棵抽象语法树(AST)

      2. javac编译过程中调用实现了JSR 269的Lombok程序

      3. 此时Lombok就对第一步骤得到的AST进行处理,找到Lombok注解所在类对应的语法树 (AST),然后修改该语法树(AST),增加Lombok注解定义的相应树节点

      4. javac使用修改后的抽象语法树(AST)生成字节码文件,生成对应类中的getter或者setter方法

    、Lombok注解的使用

       Lombok主要常用的注解有:@Data,@getter,@setter,@NoArgsConstructor,@AllArgsConstructor,@ToString,@EqualsAndHashCode,@Slf4j,@Log4j等。

      @Data注解:在JavaBean或类JavaBean中使用,这个注解包含范围最广,它包含getter、setter、NoArgsConstructor注解,即当使用当前注解时,会自动生成包含的所有方法;

      @getter注解:在JavaBean或类JavaBean中使用,使用此注解会生成对应的getter方法;

      @setter注解:在JavaBean或类JavaBean中使用,使用此注解会生成对应的setter方法;

      @NoArgsConstructor注解:在JavaBean或类JavaBean中使用,使用此注解会生成对应的无参构造方法;

      @AllArgsConstructor注解:在JavaBean或类JavaBean中使用,使用此注解会生成对应的有参构造方法;

      @ToString注解:在JavaBean或类JavaBean中使用,使用此注解会自动重写对应的toStirng方法;

      @EqualsAndHashCode:作用于类,覆盖默认的equals和hashCode

      @NonNull:主要作用于成员变量和参数中,标识不能为空,否则抛出空指针异常。

      @Builder:作用于类上,将类转变为建造者模式

      @Cleanup:自动关闭资源,针对实现了java.io.Closeable接口的对象有效,如:典型的IO流对象

      @EqualsAndHashCode注解:在JavaBean或类JavaBean中使用,使用此注解会自动重写对应的equals方法和hashCode方法;

      @Slf4j:在需要打印日志的类中使用,当项目中使用了slf4j打印日志框架时使用该注解,会简化日志的打印流程,只需调用info方法即可;

      @Log4j:在需要打印日志的类中使用,当项目中使用了log4j打印日志框架时使用该注解,会简化日志的打印流程,只需调用info方法即可;

      在使用以上注解需要处理参数时,处理方法如下(以@ToString注解为例,其他注解同@ToString注解):

      @ToString(exclude="column")

      意义:排除column列所对应的元素,即在生成toString方法时不包含column参数;

      @ToString(exclude={"column1","column2"})

      意义:排除多个column列所对应的元素,其中间用英文状态下的逗号进行分割,即在生成toString方法时不包含多个column参数;

      @ToString(of="column")

      意义:只生成包含column列所对应的元素的参数的toString方法,即在生成toString方法时只包含column参数;;

      @ToString(of={"column1","column2"})

      意义:只生成包含多个column列所对应的元素的参数的toString方法,其中间用英文状态下的逗号进行分割,即在生成toString方法时只包含多个column参数;


    参考链接:https://blog.csdn.net/qq_36314960/java/article/details/79565899

  • 相关阅读:
    解决linux sudo apt-get install xx是2出现无法定位软件包方法
    python的基础语法
    python 之装饰器
    Python-生成器
    Python中if __name__ = "__main__"的理解
    VS Code上配置python虚拟环境
    sympy简明用法
    Pandas中两个DataFrame的差集
    Time Series in pandas
    PyQt5高清屏幕自适应设置 QApplication.setAttribute(Qt.AA_EnableHighDpiScaling)
  • 原文地址:https://www.cnblogs.com/qingpw/p/12877503.html
Copyright © 2011-2022 走看看