lombok简单应用

1、介绍
在实体Bean中中有大量的Getter/Setter方法,以及toString, hashCode等方法,而且很多时候要重复写多次,为消除模板代码getter、setter、构造器、toString()、equals()等,使用lombok插件。
lombok通过注解自动实现代码生成。
2、Springboot中通过添加依赖使用lombok

<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
<dependency>
  <groupId>org.projectlombok</groupId>
  <artifactId>lombok</artifactId>
  <version>1.16.10</version>
</dependency>

3、lombok注解介绍
@NonNull : 主要作用于成员变量和参数中,做非空判断,如果传入空值会直接抛出异常NullPointerException。
@Setter/@Getter : 自动生成set和get方法,这两个注解如果作用于类上,会生成所有成员变量的getter/setter方法,如果作用于成员变量上,会生成该成员变量的getter/setter方法,可以设定访问权限及是否懒加载等。
@ToString : 自动生成toString方法,默认会包含所有类属性,使用@ToString.Exclude注解可以排除属性的生成。
@EqualsAndHashcode : 从对象的字段中生成hashCode和equals的实现,默认包含所有类属性,使用@EqualsAndHashCode.Exclude可以排除属性的生成。
@NoArgsConstructor/@RequiredArgsConstructor/@AllArgsConstructor 这三个注解作用于类上,用于生成构造函数,有staticName、access等属性,staticName属性一旦设定,将采用静态方法的方式生成实例,access属性可以限定访问权限。
自动生成构造方法。@NoArgsConstructor:生成无参数构造函数,@RequiredArgsConstructor:生成包含final和@NonNull注解的成员变量的构造函数,@AllArgsConstructor:生成包含所有参数的构造函数。
@Data : 作用于类上,是以下注解的集合:@ToString、@EqualsAndHashCode、@Getter、@Setter、@RequiredArgsConstructor
@Builder : 作用于类上,将类转变为建造者模式,建造者模式加链式调用,创建对象非常方便。
@Log : 作用于类上,生成日志变量,针对不同的日志实现产品,有不同的注解,如@Log、@Log4j、@Log4j2、@Slf4j等。

@val:使用val注解可以取代任意类型作为局部变量,这样我们就不用写复杂的ArrayList和Map.Entry类型了,当我们使用了val注解后,Lombok会从局部变量的初始化表达式推断出具体类型。
@Value : 使用@Value注解可以把类声明为不可变的,声明后此类相当于final类,无法被继承,其属性也会变成final属性。
@CleanUp : 当我们在Java代码中使用资源时,需要在使用后关闭资源,使用@Cleanup注解可以自动关闭资源,这个注解针对实现了java.io.Closeable接口的对象有效,如:典型的IO流对象。
@SneakyThrows : 可以对受检异常进行捕捉并抛出。
@Synchronized : 作用于方法级别,可以替换synchronize关键字或lock锁
@With :使用@With注解可以实现对原对象进行克隆,并改变其一个属性,使用时需要指定全参构造方法。
4、Lombok的优缺点
优点:可以通过注解方式,自动生成一些代码,开发效率提高;代码整洁度提高,减少一些简单方法;便于属性修改。
缺点:不支持多种构造函数,降低了代码的可读性。
注意:lombok 的注解不能被继承。
5、举例

@Data
@Builder
public class User {
    private String name;
    private Integer age;
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大浪淘沙胡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值