Lombok是一个Java库,能帮助开发开发人员精简代码,尤其是简单的POJO对象,只需要加一个注释,再不用生成get、set, hashcode, equals这些方法了。Lombok都能在编译的时候自动生成,让代码看起来更精简。有时候加了变量,往往会忘记加get、set方法,有了Lombok这些问题都解决了。当然Lombok还有更强大的功能。大家可以官网看看
使用
1、pom.xml文件引入依赖
2、IDEA安装Lombok插件
3、常用API
@Getter/@Setter 类的属性字段自动生成Get/Set方法
@ToString,自动生成一个toString方法
@EqualsAndHashCode,为使用该注解的类自动生成equals和hashCode方法
@NoArgsConstructor, @RequiredArgsConstructor, @AllArgsConstructor
自动生成了无参构造器、指定参数的构造器和包含所有参数的构造器。
@Data,包含了@ToString,@EqualsAndHashCode,@Getter、@Setter, @RequiredArgsConstructor
@Cleanup 自动释放资源。
@NonNull 为方法或构造函数的参数提供非空检查
这里只列举一些常用的注解。从代码结构也可以看出来支持哪些注解
例子
以Data注解举个例子,可以看到自动加上了set、get、toString、hashCode、equals方法,整个类的代码看起来是十分精简的。
原理
java的注解可以在两种时刻进行解析:1. 运行时通过反射解析 2. 编译时解析
1、运行时通过反射解析 :就像@Target、@Retention这种注解 像spring的注解都是运行时通过反射进行解析的
2、编译时解析: 是通过 JSR 269: Pluggable Annotation Processing API 实现的,只要程序实现了该API,就能在javac运行的时候得到调用
我们平常就是执行javac就可以从java文件生成class文件
而Lombok就是在javac的中间添加了处理器,读取到注解,自动添加新的代码