zoukankan      html  css  js  c++  java
  • 九、Lombok

    Lombok简介

    Project Lombok是一个java库,可以自动插入编辑器并构建工具,为Java增添色彩
    永远不要再写另一个getter或equals方法,只用一个注释,类就具有一个功能齐全的构建器,自动化日志记录变量等等。

    Lombok实现原理

    注解的两种解析方式

    • 运行时解析
    • 编译时解析

    编译时解析的两种机制

    • Annotation Processing Tool(注解处理器)
    • Pluggable Annotation Processing API(JSR269插入式注解处理器)

    原理图

    graph LR
    A(javac)-->B(生成抽象语法树AST)
    B-->C(插入式注解处理器)
    C-->D{语法树是否有变动}
    D-->|有变动|B
    D-->|无变动|G[生成字节码]
    G-->H(.class文件)
    

    Lombok常用注解

    1. 常见方法
      • @Data(包含下面四个注解)
      • @Getter
      • @Setter
      • @ToString
      • @EqualsAndHashCode
    2. 构造方法
      • @AllArgsConstructor(全参)
      • @NoArgsConstructor(无参)
      • @RequiredArgsConstructor(必须参数)
    3. 自动为类添加日志支持
      • @Slf4j
    4. 自动生成try/catch捕捉异常
      • @SneakyThrows
    5. 自动生成同步锁
      • @Synchronized
    6. 自动生成构造者模式
      • @Builder
    7. 自动调用变量的close方法释放资源
      • @Cleanup
    8. 自动生成空值校验
      • @NonNull

    Lombok插件安装

    在IDEA中安装Lombok插件

    1. IntelliJ IDEA-->Preferences-->Plugins-->Browse Repositories 搜索Lombok 安装
    2. 通过官网下载安装(注意和IDEA的版本对应) https://plugins.jetbrains.com/plugin/6317-lombok

    实例

    导入Lombok依赖

    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>1.16.16</version>
        <!-- 作用编译时期 -->
        <scope>provided</scope>
    </dependency>
    

    实例可以百度
    https://segmentfault.com/a/1190000016111422#item-2-12

    Lombok优缺点

    • 通过注解自动生产样板代码,提高开发效率
    • 代码简洁,只关注相关属性
    • 新增属性后,无需刻意修改相关方法
    • 降低了源代码的可读性和完整性
    • 加大对问题的排查难度
    • 需要IDE的相关插件支持
  • 相关阅读:
    一文读懂Lua元表
    React-Antd Pro环境搭建
    如何在QT项目中引入Boost库
    .NET Core RSA PKCS8 格式 签名/验签
    Chrome控制台Network请求过滤
    字符串拼接null值问题
    复制文件夹需要考虑的问题
    [闻缺陷则喜]关于boost的想法
    公共库开发组
    docker-compose 一键部署分布式配置中心Apollo
  • 原文地址:https://www.cnblogs.com/bigfairy/p/14002097.html
Copyright © 2011-2022 走看看