ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

lombook插件使用

2021-11-03 11:34:55  阅读:301  来源: 互联网

标签:插件 lombook Getter 使用 注解 Lombok Setter 方法 属性


前言

方便程序员开发不用写 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问题

  • 无法支持多种参数构造器的重载。

标签:插件,lombook,Getter,使用,注解,Lombok,Setter,方法,属性
来源: https://www.cnblogs.com/zk2020/p/15502858.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有