俗话说的好,授人以鱼不如授人以渔,so,我就直接将我们的LomBok的实现原理和环境说清楚哈 lombok实现原理和背景 背景 自从java6开始,javac就开始支持“JSR 269 Pluggable Annotation Processing Api”规范,也就是只要程序实现该API,就能在javac运行时得到调用 LomBok就是一个实现了“JSR 269 API”的程序,在使用javac的过程中,它产生作用的具体流程 javac对其源码进行分析,生成抽象语法树(SAT) javac编译过程中调用实现了JSR 269Api接口的LomBok注解LomBok会对javac生成的SAT(抽象语法树)进行修改,找到lombok对应所在类的对应语法树,然后,修改语法树,添加lombok注解定义的相关树节点javac会对修改后的抽象语法树进行生成字节码文件 LomBok使用流程 背景 因为我本身喜欢科技化的生产力工具,这里也就使用IDEA呐 流程 在idea中添加对应的插件进行使用 引入maven的依赖 <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.16.14</version> </dependency> LomBok常用注解 @Get@Set作用在类上 在给所有的成员变量生成GetSet方法,同时可以设定访问权限及是否懒加载等 @ToString 声称该类的toString方法,可以通过of属性限定显示某些字段,通过exclude属性排除某些字段 @NotNull 作用于成员变量和参数!表示不能为空,否则抛出空指针 @NoArgsConstructor 生成无参构造 @AllArgsConstructor 生成全参构造 @Data 是@ToString@EqualsAndHashCode@Getter@Setter @RequiredArgsConstructor注解的集合 @Log 作用于类,生成日志变量,针对不同的日志实现,有什么不同的注解 呐,lombok添加+使用+实现原理一步到位哈,加油各位