lombok使用

using lombok

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>