栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

LomBok笔记

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

LomBok笔记

Lombok笔记
  • 简介
    • 概述
  • 配置Lombok
    • 引入依赖
    • IDEA配置插件
  • 懒人一键
  • 常用注解

简介 概述

Lombok 是一种 Java 实用工具,可用来帮助开发人员消除 Java 的冗长,尤其是对于简单的 Java 对象(POJO)。 它通过注释实现这一目的。通过在开发环境中实现 Lombok,开发人员可以节省构建诸如 hashCode() 和 equals() 这样的方法以及以往用来分类各种 accessor 和 mutator 的大量时间。

一般也就用于javabean上,说白了,就是让你不用写get、set之类的重复度高比较冗余的方法,让你的代码好看不少

优点:

  • 减少大量模版代码,如get和set方法,提高开发效率
  • 增加代码可读性
  • 减少代码冲突的可能性,也方便处理冲突
  • 添加新属性后自动善后,例如添加新属性后不用重新修改toString和equal这些方法

缺点:

  • 需要IDEA对lombok的支持,要安装相应插件
  • 无法修改get/set这些方法,虽然并不建议在它们中编写业务逻辑
  • 无法查看某个get和set方法的引用过程,不方便调试
  • 一人使用,强制要求所有开发人员安装lombok插件

总结:利弊参半

如果是一个新项目,建议使用,可以减少重复劳动,加快开发效率

如果是一个老项目,以前从未使用过,那最好不要使用。修改代码成本太高,不利于维护。

配置Lombok 引入依赖

最新maven版本:


    org.projectlombok
    lombok
    1.18.20
    provided


IDEA配置插件

进入File–Settings–Plugins,搜索Lombok,你会在上方的intalled栏里上找到它,确保打上勾即可。

再进入Bulid,Execution,Deplayment–Compiler–Annotation Porcessors,开启 Annocationprocessing,让Lombok注解在编译阶段起到作用。

懒人一键

大部分时候,你只需要在你的pojo类上加上三个注解即可

@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {...}
  • **@Data:**注解在类上,这是一个集合体,它包含了:

    • @Getter
    • @Setter
    • @RequiredArgsConstructor
    • @ToString
    • @EqualsAndHashCode
    • @lombok.Value
  • **@NoArgsConstructor:**生成无参构造器

  • @AllArgsConstructor: 生成全参构造器

以后你的pojo类就不用费尽心思用idea生成一堆重复的代码,可以美观地写上自己的属性和方法啦!

常用注解

lombok使用过程中主要是靠注解起作用的,官网上的文档里面有所有的注解。

这些注解是作用在预编译器上的

  • **@Data:**注解在类上,这是一个集合体,它包含了:
    • @Getter
    • @Setter
    • @RequiredArgsConstructor
    • @ToString
    • @EqualsAndHashCode
    • @lombok.Value

一般pojo类用到@Data、@AllArgsConstructor和@NoArgsConstructor

  • **@Value:**注解在类上,相当于同时使用

    • @Getter
    • @FieldDefaults(makeFinal=true,level=AccessLevel.PRIVATE)
    • @AllArgsConstructor
    • @ToString
    • @EqualsAndHashCode

    @Value注解适用于常见不可变对象,即把成员变量全部设定为private、final修饰,且不生成对应的set方法。

  • **@Getter / @Setter:**作用于成员变量(单个属性)或类(全部属性)上,生成该成员变量的getter/setter方法。可以设定访问权限及是否懒加载等

@Getter @Setter private int age;
@Setter(AccessLevel.PROTECTED) private String name;

  • **@NoArgsConstructor:**作用于类,生成无参构造器,(可采用access控制访问级别,如@NoArgsConstructor(access=lombok.AccessLevel.PROTECTED))。
  • @AllArgsConstructor: 作用于类,生成全参构造器
  • @RequiredArgsConstructor: 注解在类上,生成包含final和@NonNull注解的成员变量的构造器

PS:

  1. @NoArgsConstructor和@AllArgsConstructor可同时标注
  2. @RequiredArgsConstructor只能和@AllArgsConstructor同时标注;
  3. @RequiredArgsConstructor配合@NonNull同时使用时,只有标注了@NonNull的字段才会被纳入构造器.
  • @ToString: 作用于类,覆盖默认的toString()方法,可以通过of属性限定显示某些字段,exclude属性排除某些字段
@ToString(of = {"name,age"}), exclude = {"sex"})
public class Person() {...}
  • **@EqualsAndHashCode:**作用于类,覆盖默认的equals和hashCode
  • **@NonNull:**避免空指针
//写在形参前
public NonNullExample(@NonNull User user)
  • **@Log:**作用于类上,生成日志
  • **@Cleanup:**自动调用close()方法
@Cleanup InputStream in = new FileInputStream(args[0]);
@Cleanup OutputStream out = new FileOutputStream(args[1]);
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/314910.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号