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>