Lombok是一个简单的Java库,该工具可以通过注解自动地提供一些方法,简化开发。比如编写POJO时需要为每个属性提供getter()方法和setter()方法,这就可以使用Lombok实现。
Lombok只是一个小工具,要使用它非常简单,如果使用的是IDEA的话可以直接在IDE中下载安装插件,然后在项目中依赖即可。
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.2</version>
<scope>provided</scope>
</dependency>
Lombok使用注解提供功能,有14个注解,在对应的类、方法或者属性上使用对应的注解即可。
Lombok的最大的优点就是不用编写大量的版式代码,比如我们项目中有许多POJO,那么为每个pojo编写getter()、setter()、toString()方法是非常枯燥的事情,虽然可以使用IDE自带的代码生成工具来生成这些方法,但还是不够简便。
Lombok工具提供更加强大的功能,你在需要什么方法时,只需要添加注解即可。而且提供的方法补全比IDE自带的要多一些。
该注解可以注解类,也可以注解属性。
注解类时会为类中的每个属性默认生成setXxx(Xxx xxx)方法;注解属性时为这个属性生成setXxx(Xxx xxx)方法。
该注解和@Setter类似,可以注解类,也可以注解属性。
注解类时会为类中的每个属性默认生成getXxx()方法;注解属性时为这个属性生成getXxx()方法。但这不是绝对的,如果属性是布尔类型,那么生成的方法是isXxx()而不是getXxx()。
日志注解,注解在类上。可以使用日志注释对任何类进行注释,以使lombok生成记录器字段。而且@Log有许多变体:
@CommonsLog @Flogger @JBossLog @Log @Log4j @Log4j2 @Slf4j @XSlf4j
默认情况下,记录器的主题(或名称)将是使用@Log注释注释的类的类名。可以通过指定topic参数来自定义。例如: @Log4j(topic="hello")。
该注解用在类上,自动为该类提供一个全参构造函数。注意:默认不提供无参构造。
该注解用在类上,自动为该类提供一个无参构造函数。
该注解用在类上,自动为该类提供Equals()方法和HashCode()方法。比如,如果对象需要放进HashMap,我们可以简单的为它的类添加这个标签即可。
注解在属性上或者方法的入参上,用于属性非空检查。
如果注解在方法的入参上,会在方法体中生成一个null检查(if语句),如果为空,抛出NullPointerException异常。
注解在属性上,保证为该属性分配的资源被释放。比如输入输出流就可以添加该注解。
如果在局部变量上添加该注解,那么后续代码都将自动被try/catch块包裹,以保证资源得到释放。
注解在类上,为该类自动生成toString()方法。默认将所有非静态变量以key-value形式输出。但该注解提供三个属性可供配置:
该注解使用在类上,为该类生成一个构造方法--参数是该类中所有被@NonNull注解的变量或者被final修饰的变量。
这个注解使用在类上,会生成含所有属性的构造方法,所有属性的getter() 方法、equals()方法、hashCode()方法、toString() 方法。 注意:没有setter()方法
注解在类上,该注解是最常用的注解,它结合了@ToString,@EqualsAndHashCode, @Getter和@Setter。本质上使用@Data注解,类默认有@ToString和@EqualsAndHashCode以及每个字段都有@Setter和@Getter。该注解也会生成一个公共构造函数,以所有@NonNull和final的属性作为参数。
@#¥%……&* 这是个什么东东?没用过。
@#¥%……&* 这是个什么东东?没用过。