一.简介
非常牛逼的优化代码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();
网友评论