• lombook插件使用


    前言

    方便程序员开发不用写 set get toString 无参有参(开发工具生成也很快嘛),使 pojo看起来简介,美观,程序员只需通过对应的注解即可,程序可以在编译源码的时候自动生成对应的方法
    官网地址 https://projectlombok.org/

    Idea添加 Lombok插件

    • IDEA中添加Lombok插件, File -> Setting -> Plugins 搜索Lombok Plugin, 点击install,安装完成后重启IDEA。

    使用

    • 导入 jar 包(官网直接下载)
    • maven 方式
      <dependency>
              <groupId>org.projectlombok</groupId>
              <artifactId>lombok</artifactId>
              <version>${version}</version>
      </dependency>
      
      

    常用注解

    @Getter and @Setter

    • 可以作用在类上和属性上,放在类上,会对所有的非静态(non-static)属性生成Getter/Setter方法,放在属性上,会对该属性生成Getter/Setter方法。并可以指定Getter/Setter方法的访问级别。

    @ToString

    • 生成toString方法,默认情况下,会输出类名、所有属性,属性会按照顺序输出,以逗号分割。

    @EqualsAndHashCode

    • @EqualsAndHashCode 会创建包含所有成员变量的 equals 和 hashCode 方法。 exclude选项可用于通知 Lombok排除某些成员变量。

    @AllArgsConstructor, @RequiredArgsConstructor and @NoArgsConstructor

    • 全参构造器、部分参数构造器、无参构造器,当我们需要重载多个构造器的时候,Lombok就无能为力了。

    日志

    • @Log, @Log4j, @Log4j2, @Slf4j, @XSlf4j, @CommonsLog, @JBossLog, @Flogger, @CustomLog

    @Data

    • @ToString, @EqualsAndHashCode, 所有属性的@Getter, 所有non-final属性的@Setter和@RequiredArgsConstructor的组合,通常情况下,我们使用这个注解就足够了。

    @Builder

    • 建造者设计模式描述了一种灵活的创建对象的方式。 Lombok可以帮你轻松的实现该模式。

    @Singular

    • 对集合进行操作,最终生成不可变集合,不可变集合底层是可变集合,修改时会报抛异常.
      @Delegate

    @Value

    • 也是整合包,但是他会把所有的变量都设成 final 的,其他的就跟 @Data 一样,等于同时加了以下注解
      @Getter (注意没有setter)
      @ToString
      @EqualsAndHashCode
      @RequiredArgsConstructo

    @Accessors

    • 使用在 类或字段上,目的是修改 getter 和 setter方法的内容

    @Wither

    • 不推荐
    • 快速生成克隆类

    @Delegate

    • 不建议使用
    • 生成委托对象的方法
      types: 委托人
      excludes: 被委托人

    @ExtensionMethod

    • 可以扩展已有的类
      1. 对代码的风格的影响很大
      2. 对于父类的扩展不是很好的应用到子类上.
      3. 在 netbeans中不起作用
      4. @ExtensionMethod 作用范围没有很好的定义
      5. 此功能比我们想象中有更多错误

    @NonNull

    • 对方法参数进行 null 检查通常不是一个坏主意,特别是如果该方法形成的 API被其他开发者使用。虽然这些检查很简单,但是他们可能变得冗长,特别是当你有多个参数时。

    @Cleanup

    • 自动资源管理:自动调用关闭资源方法 ,默认调用 close() 方法,在 finaly块中,只有在给定的资源不是 null的情况下,才会调用清理方法,如果要清理的对象没有 close()方法,可以指定一个无参方法来进行自动清理.

    Lombok 原理

    • 了解了简单的使用之后,现在应该比较好奇它是如何实现的。整个使用的过程中,只需要使用注解而已,不需要做其它额外的工作,那玄妙之处应该是在注解的解析上。JDK5引入了注解的同时,也提供了两种解析方式。

    运行时解析

    • 运行时能够解析的注解,必须将@Retention设置为RUNTIME,这样可以通过反射拿到该注解。java.lang.reflect反射包中提供了一个接口AnnotatedElement,该接口定义了获取注解信息的几个方法,Class、Constructor、Field、Method、Package等都实现了该接口,大部分开发者应该都很熟悉这种解析方式。
      boolean isAnnotationPresent(Class<? extends Annotation> annotationClass);
      <T extends Annotation> T getAnnotation(Class<T> annotationClass);
      Annotation[] getAnnotations();
      Annotation[] getDeclaredAnnotations();
      

    Lombok问题

    • 无法支持多种参数构造器的重载。
  • 相关阅读:
    不容易发现的错误
    Element-UI 笔记
    工作中常用的操作/经验
    记录一些前端强大的插件
    HttpContext.Current.ApplicationInstance.Application vs HttpContext.Current.Application
    What Is a Replay Attack?
    ASP.NET's Data Storage Objects
    JSON Web Token (JWT) RFC7519
    Session-State Modes
    After change SessionID data in Session variables is lost
  • 原文地址:https://www.cnblogs.com/zk2020/p/15502858.html
Copyright © 2020-2023  润新知