打开perferences或者settings,找打plugins,选择Browse repositories...,搜索lombok,下载安装重启便可。java
2.一、@Getter and @Setter:api
能够做用在类上和属性上;放在类上,会对全部的非静态(non-static)属性生成Getter/Setter方法;放在属性上,会对该属性生成Getter/Setter方法。默认生成的方法是public的,若是要修改方法修饰符能够设置AccessLevel的值,例如:@Getter(access = AccessLevel.PROTECTED)ide
2.二、@FieldNameConstants
2.三、@ToStringui
2.四、@EqualsAndHashCodespa
默认状况下,会使用全部非瞬态(non-transient)和非静态(non-static)字段来生成equals和hascode方法,能够经过在可选的exclude参数中来排除更多字段。或者,经过在parameter参数中命名它们来准确指定但愿使用哪些字段。
2.五、@AllArgsConstructor, @RequiredArgsConstructor and @NoArgsConstructor插件
无参构造器、部分参数构造器、全参构造器,当咱们须要重载多个构造器的时候,Lombok就无能为力了。日志
2.六、@Log, @Log4j, @Log4j2, @Slf4j, @XSlf4j, @CommonsLog, @JBossLog, @Floggercode
注解在类上;为类提供一个 属性名为log 的 log4j 日志对象
2.七、@Data【经常使用】对象
@ToString, @EqualsAndHashCode, 全部属性的@Getter, 全部non-final属性的@Setter和@RequiredArgsConstructor的组合,
一般状况下,咱们使用这个注解就足够了。blog
2.八、其余
@Builder:为你的类生成复杂的构建器API。
@Singular
@Delegate:至关的牛逼,它会该类生成一些列的方法,这些方法都来自与List接口
@Value
@Accessors
主要用于控制生成的getter和setter
主要参数介绍
@Wither:提供了给final字段赋值的一种方法
@Cleanup:关闭流
@Synchronized:给方法加上同步锁,对象同步
@SneakyThrows:抛出异常
from Intellij 14.1 @val
from Intellij 15.0.2 @var
from Intellij 14.1 @var
from Intellij 2016.2 @UtilityClass
Lombok config system
Code inspections
Refactoring actions (lombok and delombok)
在perferences或Settings设置页面,点击【Build,Execution,Deployment】-->选择Compiler-->选中Annotation Processors,而后在右侧勾选Enable annotation processing便可。
注意。每一个项目都需设置此项,若是不配置此项lombok注解不会生效。
<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.16.18</version> <scope>provided</scope> </dependency>
主要使用步骤2中注解
1.运行时解析
运行时可以解析的注解,必须将@Retention设置为RUNTIME,这样能够经过反射拿到该注解。java.lang.reflect反射包中提供了一个接口AnnotatedElement,
该接口定义了获取注解信息的几个方法,Class、Constructor、Field、Method、Package等都实现了该接口,大部分开发者应该都很熟悉这种解析方式。
2.编译时解析
2.一、Annotation Processing Tool
apt自JDK5产生,JDK7已标记为过时,不推荐使用,JDK8中已完全删除,自JDK6开始,可使用Pluggable Annotation Processing API来替换它,
apt被替换主要有2点缘由:
api都在com.sun.mirror非标准包下
没有集成到javac中,须要额外运行
apt的更多介绍能够参见这里。
2.二、Pluggable Annotation Processing API
JSR 269,自JDK6加入,做为apt的替代方案,它解决了apt的两个问题,javac在执行的时候会调用实现了该API的程序,这样咱们就能够对编译器作一些加强,
这时javac执行的过程以下: 这里写图片描述
Lombok就是使用这种方式实现的,有兴趣的话能够去看看其Lombok源码,对应注解的实现都在HandleXXX中,
好比@Getter注解的实现是HandleGetter.handle()。
还有一些其它类库使用这种方式实现,好比Google Auto、Dagger等等。
缺点:没法支持多种参数构造器的重载