lombok是一款能够在java代码编译阶段改变代码的插件。比如生成setter和getter方法,生成log类变量等,能够简化一些特定的模版式代码。本文将以实现一个基于特定注解生成日志代码的方式,简单介绍在lombok基础上自定义扩展的方式。
1、实现功能
基于自定义注解,将下面的代码块1变成代码块2,自动生成日志代码:
//代码块1
static void m1(Map req) {
System.out.println("m1 running");
}
//代码块2
static void m1(Map req) {
log.info("Application.m1 req:{}", JSON.toJSONString(req));
System.out.println("m1 running");
}
2、环境准备
首先搭建lombok工程,git地址:https://github.com/rzwitserloot/lombok,并安装ant环境,lombok需要使用ant编译,并下载openjdk(可选),使用openjdk有助于理解javac的源码,因为默认jkd是没有javac的源码的。
关于这些环境,自己想办法百度去搞定吧!
3、核心实现
自定义注解:
package lombok.extern.youzan;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
*
* Date: 2018/5/26
* @author xuzhiyi
*/
@Target({ElementType.METHOD})
@Retention(RetentionPolicy.SOURCE)
public @interface LogBefore {
String level() default "info";
}
这个注解是用来作用在方法上,来表示需要在方法第一行增加代码,log方法传入的参数;
自定义注解解析:
package lombok.javac.handlers;
import com.sun.tools.javac.