lombok.jar
lombok.jar是一个java程序的jar包,lombok.jar是lombok项目的必备包,lombok是属于java中的实用工具,使用lombok.jar包可以消除java的冗长,是一个关键的jar包。文件说明
lombok 是一种java™实用工具,可用来帮助开发人员消除java的冗长,尤其是对于简单的java对象(pojo)
使用方法
eclipse / myeclipse 手动安装 lombok
1. 将 lombok.jar 复制到 myeclipse.ini / eclipse.ini 所在的文件夹目录下
2. 打开 eclipse.ini / myeclipse.ini,在最后面插入以下两行并保存:
-xbootclasspath/a:lombok.jar
-javaagent:lombok.jar
3.重启 eclipse / myeclipse
原理分析
接下来进行lombok能够工作的原理分析,以oracle的javac编译工具为例。
自从java 6起,javac就支持“jsr 269 pluggable annotation processing api”规范,只要程序实现了该api,就能在javac运行的时候得到调用。
举例来说,现在有一个实现了jsr 269 api的程序a,那么使用javac编译源码的时候具体流程如下:
1)javac对源代码进行分析,生成一棵抽象语法树(ast)
2)运行过程中调用实现了jsr 269 api的a程序
3)此时a程序就可以完成它自己的逻辑,包括修改第一步骤得到的抽象语法树(ast)
4)javac使用修改后的抽象语法树(ast)生成字节码文件
lombok本质上就是这样的一个实现了jsr 269 api的程序。在使用javac的过程中,它产生作用的具体流程如下:
1)javac对源代码进行分析,生成一棵抽象语法树(ast)
2)运行过程中调用实现了jsr 269 api的lombok程序
3)此时lombok就对第一步骤得到的ast进行处理,找到@data注解所在类对应的语法树(ast),然后修改该语法树(ast),增加getter和setter方法定义的相应树节点
4)javac使用修改后的抽象语法树(ast)生成字节码文件 .
编译工具
1)由“三、原理分析”可知,oracle javac直接支持lombok
2)常用的项目管理工具maven所使用的java编译工具来源于配置的第三方工具,如果我们配置这个第三方工具为oracle javac的话,那么maven也就直接支持lombok了
3)intellij idea配置的编译工具为oracle javac的话,也就直接支持lombok了。
4)eclipse中使用的不是oracle javac这个编译工具,而是自己实现的eclipse compiler for java (ecj).要想使ecj支持lombok,得进行设置,具体是在eclipse程序目录中的eclipse.ini文件中添加如下两行设置:
-javaagent:[lombok.jar所在路径]
-xbootclasspath/a:[lombok.jar所在路径]