lombok

作者: 升空的焰火 | 来源:发表于2019-05-13 15:46 被阅读0次

    一.简介

    非常牛逼的优化代码pojo编写神器。仅仅通过注解就能实现多模板化代码的省略编写。

    不过恶心的是,它是个插件,不仅仅是jar包引入,需要安装插件才能玩。

    为什么呢?因为它是编译期解析,然后通过插件程序改class文件,把省略的部分补上去。

    Lombok本质上就是一个实现了“JSR 269 API”的程序。在使用javac的过程中,它产生作用的具体流程如下:

    javac对源代码进行分析,生成了一棵抽象语法树(AST)

    运行过程中调用实现了“JSR 269 API”的Lombok程序

    此时Lombok就对第一步骤得到的AST进行处理,找到@Data注解所在类对应的语法树(AST),然后修改该语法树(AST),增加getter和setter方法定义的相应树节点

    javac使用修改后的抽象语法树(AST)生成字节码文件,即给class增加新的节点(代码块)

    有点恶心呀!


    二.使用

    1.@Data

    @Data注解在类上,会为类的所有属性自动生成setter/getter、equals、canEqual、hashCode、toString方法,如为final属性,则不会为该属性生成setter方法。

    用了就基本只用关注属性就好了,不过可能很多东西大家用不上,多了编译会慢哟。

    2.@Getter/@Setter

    注解后不用写属性的get,set。超级方便,以后看一个pojo,再也不用看那么多模板代码了。

    3.@NonNull

    顾明思议,为空校验,用spring的就好,这个看看就行。

    4.@Cleanup

    不用关心流的关闭了,写那么多try catch 。直接在声明流变量的时候调用,发明。

    5.@EqualsAndHashCode,@Equals,@hashcode

    懒得重写对象的equals,hashcode方法,直接用,完美。

    6.@NoArgsConstructor, @RequiredArgsConstructor and @AllArgsConstructor

    无参构造器、部分参数构造器、全参构造器。Lombok没法实现多种参数构造器的重载。

    7.@Delegate

    代理模式

    正如我们所知的,在程序中调用rest接口是一个常见的行为动作,如果你和我一样使用过spring 的RestTemplate,我相信你会我和一样,对他抛出的非http状态码异常深恶痛绝。

    所以我们考虑将RestTemplate最为底层包装器进行包装器模式的设计:

    @DelegateprotectedvolatileRestTemplate restTemplate;

    自动重写restTemplate所有方法。

    8.@Accessors(chain =true)

    链式编程的美。

    Student student =newStudent() .setAge(24) .setName("zs");


    9.@Builder

    工厂式创建对象,贼爽。

    Student student = Student.builder().name("zs").age(24).build();


    终于写完了,关键项目用不用。

    相关文章

      网友评论

          本文标题:lombok

          本文链接:https://www.haomeiwen.com/subject/pmrwgqtx.html