zoukankan      html  css  js  c++  java
  • 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/

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

  • 相关阅读:
    分析函数
    HIBERNATE锁机制
    面试小计
    java Base64算法的使用
    Mac & XCode 使用技巧总结
    设计模式-15 模板模式
    Struts学习总结-02 上传文件
    java学习总结
    Java中 VO、 PO、DO、DTO、 BO、 QO、DAO、POJO的概念
    设计模式-14 MVC模式
  • 原文地址:https://www.cnblogs.com/imist/p/11417640.html
Copyright © 2011-2022 走看看