Lombok快速入门

Lombok介绍以及优点

龙目岛名称由来

龙目岛 Lombok 印度尼西亚西努沙登加拉(Nusa Tenggara Barat)省岛屿,小巽他群岛之一。西隔龙目海峡面对巴厘岛,东隔阿拉斯(Alas)海峡面松巴哇(Sumbawa)岛,北濒爪哇海,南临印度洋。面积5435平方千米

作用:通过简单的注解来精简代码来达到消除冗长代码的目的

Lombok的优点

  • 提高编码效率

  • 让代码更简洁

  • 消除冗长代码

  • 避免修改字段名字时忘记修改方法名

    • 防止序列化的时候因为改了方法名导致序列化异常或者不符合预期
  • 学习如果不是为了装逼,那么动力会小很多

注意: idea上必须支持Lombok,不然会报错;如果安装了lombok插件,但是编译的时候还是找不到log,检查Annotation Processors -> Enable annotation processing 是否勾选

lombok原理

  • JSR 269 Pluggable Annotation Processing API
  • javac 从Java6开始支持JSR 269 API 规范
  • 只要程序实现了该api,就能在javac运行的时候得到调用
    • 编译时生效
  • Lombok实现了JSR 269 API ,在编译时javac 编译源码的具体流程如下
    img

Lombok引入项目

  • maven引入Lombok
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.16.18</version>
            <!--这一句可以加 也可以不加,加了达成jar包或者war包的时候不会打入包中-->
            <scope>provided</scope>
        </dependency>
  • 在官网 Install>BuildTools>maven可以拿到依赖的配置,在中央仓库也可以获取

idea/eclipse安装lombok插件

  • idea安装之后重启即可
    img
eclipse安装lombok插件
  • 下载 lombok.jar

  • 双击运行lombok.jar或者 sudo java -jar lombok.jar

    • 需要保证所执行的用户拥有权限
  • 如图安装
    img

  • 权限问题

  • mac/linux 可能遇到这个问题

img

  • Windows如果遇到权限问题,选择管理员权限运行即可
  • 重启安装程序进行安装

lombok实战

  • @Data 加在类上
  • @Get 自动生成get/set方法
  • @Get(AccessLevel.PROTECTED) 生成对应关键词修饰的get/set
  • @Set 自动生成get/set方法
  • @Set(AccessLevel.PROTECTED) 生成对应关键词修饰的get/set
  • @NoArgsConstructor 生成无参数构造器
  • @AllArgsConstructor 生成全部参数构造器
  • @ToString 将当前全部的属性生成toString方法(重写toString)
  • @ToString(exclude = "column") 将当前除了column的属性的其他属性生成toString方法(重写toString)
  • @EqualAndHashCode 将类的equal和hashcode方法重写
  • @EqualAndHashCode(exclude = "column")将类的属性除了"column"的其他属性生成equal和hashcode,
  • @Slf4j 和logback配合使用,使用这个注解之后。可以不用声明logback,直接使用
  • @Log4j 和Log4j日志框架配合使用,使用这个注解之后。可以不用声明Log4j,直接使用

排除与包含一个或者多个属性的注意点

  • @ToString(exclude = "column") 排除一个字段
  • @ToString(exclude = {"column1","column2"}) 排除多个字段
  • @ToString(of = "column2") 只包含一个字段
  • @ToString(of = {"column1","column2"}) 包含多个字段
  • EqualsAndHashCode 同上

注意@Data

  • @Data包含了以下注解,但是不包含全参数构造器和无参数构造器
    • @Get和@Set
    • @ToString以及@EqualsAndHashCode

反编译

  • Java DeCompiler Java反编译
  • 官网 现已经无效 Java DeCompiler
  • JD-GUI 图形化界面工具
  • JD-eclipse eclipse插件
  • JD-IntelliJ idea插件

一般的,开源软件可以直接通过maven下载源码进行查看,否则可能需要反编译工具进行查看

  • Lombok验证
    • 通过JavaDecompiler验证class文件

lombok实际使用的注意点

  • 在类需要序列化反序列化详细控制字段的时候

    • 例如Jackson json序列化 ,当字段为null,则不序列化,会有点坑
  • 使用lombok虽然能够省去手动创建getter/setter方法等繁琐固定的代码,但是却降低了源代码文件的可读性和完整性,降低了阅读代码的舒适度

  • 使用@Slf4j还是@Log4j取决于项目使用的日志框架

  • 选择适合的地方使用lombok,例如pojo是一个比较好的地方,pojo比较单纯

小确幸

每一丝灵感都值得被记录,每一笔记录都是成长,每一点成长都值得欢呼

博主个人站: www.imisty.cn
CSDN博客: https://blog.csdn.net/lookinthefog
博客园 :https://imist.cnblogs.com/

希望能够认识一些热爱技术的小伙伴,欢迎友链接哟

posted @ 2019-08-27 12:28  iMisty  阅读(448)  评论(0编辑  收藏  举报