点击上方“Java之间”,选择“置顶或者星标”
你关注的就是我关心的!
来源:http://i7q.cn/4omVcm
上一篇: 数据库查询速度优化之解决技巧 还在编写无聊枯燥又难以维护的POJO吗? 洁癖者的春天在哪里? 请看Lombok! 在过往的Java项目中,充斥着太多不友好的代码: POJO的getter/setter/toString; 异常处理; I/O流的关闭操作等等,这些样板代码既没有技术含量,又影响着代码的美观,Lombok应运而生。 首先说明一下: 任何技术的出现都是为了解决某一类问题的,如果在此基础上再建立奇技淫巧,不如回归Java本身。 应该保持合理使用而不滥用。 Lombok的使用非常简单,下面我们一起来看下: 1)引入相应的maven包:
Lombok的scope=provided,说明它只在编译阶段生效,不需要打入包中。
事实正是如此,Lombok在编译期将带Lombok注解的Java文件正确编译为完整的Class文件。
2)添加IDE工具对Lombok的支持:
IDEA中引入Lombok支持如下:
- 点击File-- Settings设置界面,安装Lombok插件:
![c000f3c8e792e1488b46aceab31dd060.png](https://i-blog.csdnimg.cn/blog_migrate/eba75f6270b4fc29d60a029b274d38b0.jpeg)
- 点击File-- Settings设置界面,开启Annocation Processors:
![7ba170892ec1fead1c4d812af9403fef.png](https://i-blog.csdnimg.cn/blog_migrate/dc83cc344d8cc3fcdc6f355ac12bb811.jpeg)
-Xbootclasspath/a:[lombok.jar所在路径]-javaagent:[lombok.jar所在路径]
3)Lombok实现原理:
自从Java 6起,javac就支持“JSR 269 Pluggable Annotation Processing API”规范,只要程序实现了该API,就能在javac运行的时候得到调用。
Lombok就是一个实现了"JSR 269 API"的程序。
在使用javac的过程中,它产生作用的具体流程如下:
- javac对源代码进行分析,生成一棵抽象语法树(AST)
- javac编译过程中调用实现了JSR 269的Lombok程序
- 此时Lombok就对第一步骤得到的AST进行处理,找到Lombok注解所在类对应的语法树(AST),然后修改该语法树(AST),增加Lombok注解定义的相应树节点
- javac使用修改后的抽象语法树(AST)生成字节码文件
![3ec275febebca3bcbc79923fb0c38610.png](https://i-blog.csdnimg.cn/blog_migrate/03ff9cc93068b3cb7959919bbef5a6c6.jpeg)
@ToString:
作用于类,覆盖默认的toString()方法,可以通过of属性限定显示某些字段,通过exclude属性排除某些字段。
![9f1afe665479824d12d3bc9da594c2d9.png](https://i-blog.csdnimg.cn/blog_migrate/7cc0b333f4cb3c09baa59fda1e9522e0.jpeg)
![0a83eacb896eba0ba227dab6664bb5a6.png](https://i-blog.csdnimg.cn/blog_migrate/3afe0b3e0ffb650117ffb9298a8826db.jpeg)
![0eddfdd4c5d279c71f0f9403493ad5f4.png](https://i-blog.csdnimg.cn/blog_migrate/5476ecbe48aaaadfd11e1222e113d3af.jpeg)
@Data:
作用于类上,是以下注解的集合:
@ToString @EqualsAndHashCode @Getter @Setter @RequiredArgsConstructor
@Builder:
作用于类上,将类转变为建造者模式
@Log:
作用于类上,生成日志变量。
针对不同的日志实现产品,有不同的注解:
![e19b204b841bd2e45a8dd1ecd9eaccb8.png](https://i-blog.csdnimg.cn/blog_migrate/4ad85fd84a2db90cc4ca582c85f5ef5e.jpeg)
![9208644c94cbccdff077f77252aa93b3.png](https://i-blog.csdnimg.cn/blog_migrate/833ef0b3640aafba735ac8b83e4e16ca.jpeg)
![16ba681adcda94d7e77205ddbe402838.png](https://i-blog.csdnimg.cn/blog_migrate/745d7a1d6e5feab09d0097367a287199.jpeg)
![242bc7c9827d4e391a997574544bc115.png](https://i-blog.csdnimg.cn/blog_migrate/7ee40725d50df3e4de96a6107bdc048d.jpeg)
![f5826a0a7b6052cc0aa797be2fecb051.png](https://i-blog.csdnimg.cn/blog_migrate/c7b0ea81a50f492e91f031645258a6a9.png)
![3f406f8e3f98afc8bd00f86f83efcfec.png](https://i-blog.csdnimg.cn/blog_migrate/d82f4f991161d2c9ad9ed79fff82c56c.jpeg)