lombok介绍
lombok实现了编译器的Pluggable Annotation Processing API,在编译时修改原有的抽象与法树(AST),生成对应的字节码文件,实现对源码的扩展。
lombok安装
从官网现在jar,双击或使用java -jar lombok.jar运行,按提示安装到不同的IDE中,不用的IDE也可使用插件的形式完成对lombok的支持
maven引用
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.16.8</version>
</dependency>
lombok常用功能
- val变量将声明为final,类型自动感知
- @NonNull方法参数前添加,如传递参数为null则会跑出空指针异常
- @Cleanup声明需要手动清理、回收的对象前,使用完成后自动清理
- @Getter- @Setter设置在属性前,生成getter,Setter方法
- @NoArgsConstructor无参构造方法- @AllArgsConstructor包含所有参数的构造方法- @RequiredArgsConstructor静态工厂的方式生成实例对象
- @Data相当于同时使用了@ToString、@EqualsAndHashCode、@Getter、@Setter和@RequiredArgsConstrutor
- @Value和Data类似用在类上,生成的属性为final类型,只包含getter方法
- @Builder为类提供build建造者模式的构造方式,XX.builder()…
- @SneakyThrows声明方法可能会抛出的异常
- @Getter(lazy=true)懒加载,调用时才会生成,标记的属性为fianl类型
- @Log自动注入log对象,有不同的实现方式- @CommonsLog Creates log = org.apache.commons.logging.LogFactory.getLog(LogExample.class);
- @Log Creates log = java.util.logging.Logger.getLogger(LogExample.class.getName());
- @Log4j Creates log = org.apache.log4j.Logger.getLogger(LogExample.class);
- @Log4j2 Creates log = org.apache.logging.log4j.LogManager.getLogger(LogExample.class);
- @Slf4j Creates log = org.slf4j.LoggerFactory.getLogger(LogExample.class);
- @XSlf4j Creates log = org.slf4j.ext.XLoggerFactory.getXLogger(LogExample.class);
 
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>jcl-over-slf4j</artifactId>
    <version>${slf4j.version}</version>
</dependency>
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>jul-to-slf4j</artifactId>
    <version>${slf4j.version}</version>
</dependency>
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>log4j-over-slf4j</artifactId>
    <version>${slf4j.version}</version>
</dependency>
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>${slf4j.version}</version>
</dependency>
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-jdk14</artifactId>
    <version>${slf4j.version}</version>
</dependency>
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-log4j12</artifactId>
    <version>${slf4j.version}</version>
</dependency>
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-simple</artifactId>
    <version>${slf4j.version}</version>
</dependency>
