Lombok使用与注解说明

Lombok是j一款开发工具,它可以通过注释的形式,消除java的冗余代码,特别是简单的java对象。例如hashCode()和equals()这样的方法以及以往用来分类各种accessor和mutator的大量时间。
如何要使用,首先在pom.xml中添加依赖
在这里插入图片描述

Lombok的注解说明:
@NonNull
给方法参数增加这个注解会自动在方法内对该参数进行是否为空的校验,如果为空,则抛出NPE(NullPointerException)

@Cleanup
自动管理资源,用在局部变量之前,在当前变量范围内即将执行完毕退出之前会自动清理资源,自动生成try-finally这样的代码来关闭流

@Getter或@Setter
用在属性上,我们就可以不必写getter和setter方法了,并且还可以指定访问的范围

@ToString
用在类上,可以自动复写toString方法,还可以添加其他参数,例如:@ToString(exclude=”id”)排除id属性,或者@ToString(callSuper=true, includeFieldNames=true)调用父类的toString方法,包含所有属性

@EqualsAndHashCode
用在类上,可以自动生成equals和hashCode方法

@NoArgsConstructor, @RequiredArgsConstructor and @AllArgsConstructor
用在类上,自动生成无参构造和使用所有有参构造函数以及把所有@NonNull属性作为参数的构造函数,如果指定staticName = “of”参数,同时还会生成一个返回类对象的静态工厂方法

@Data
用在类上,相当于同时使用了@ToString、@EqualsAndHashCode、@Getter、@Setter和 @RequiredArgsConstrutor这些注解

@Value
用在类上,是@Data的不可变形式,相当于为属性添加final声明,只提供getter方法,而不提供setter方法

@SneakyThrows
自动抛受检异常,而无需显式在方法上使用throws语句

@Synchronized
用在方法上,将方法声明为同步的,并自动加锁,而锁对象是一个私有的属性 l o c k 或 lock或 lockLOCK,而java中的synchronized关键字锁对象是this,锁在this或者自己的类对象上存在副作用,就是你不能阻止非受控代码去锁this或者类对象,这可能会导致竞争条件或者其它线程错误

@Getter(lazy=true)
可以替代经典的Double Check Lock样板代码

@Log:根据不同的注解生成不同类型的log对象,但是实例名称都是log,有六种可选实现类

	@CommonsLogCreates log = org.apache.commons.logging.LogFactory.getLog(LogExample.class);
	@LogCreates log = java.util.logging.Logger.getLogger(LogExample.class.getName());
	@Log4jCreates log = org.apache.log4j.Logger.getLogger(LogExample.class);
	@Log4j2Creates log = org.apache.logging.log4j.LogManager.getLogger(LogExample.class);
	@Slf4jCreates log = org.slf4j.LoggerFactory.getLogger(LogExample.class);
	@XSlf4jCreates log = org.slf4j.ext.XLoggerFactory.getXLogger(LogExample.class);

@Builder
用在类,构造器和方法上,在Lombok v0.12.0中作为实验功能引入。自lombok v1.16.0起获得了@Singular支持并被升级到了主要lombok软件包, 从lombok v1.18.8开始是合法的(并会抑制生成器方法的生成)。使您可以自动生成使您的类可实例化的代码,例如:
Person.builder().name(“Adam Savage”).city(“San Francisco”).job(“Mythbusters”).job(“Unchained Reaction”).build();
用注释的方法@Builder(从现在开始称为target)将生成以下7件事:
一个内部静态类,名为FooBuilder,其类型参数与静态方法相同(称为builder)。
在构建器中:目标的每个参数有一个私有的非静态非最终字段。
在builder中:包私有的无参数空构造函数。
在builder中:对目标的每个参数使用类似于“ setter”的方法:与该参数具有相同的类型和相同的名称。如上例所示,它返回构建器本身,以便可以将setter调用链接起来。
在builder中:build()调用该方法的方法,并在每个字段中传递。它返回与目标返回类型相同的类型。
在构建者中:明智的toString()实现。
在包含target的类中:一个builder()方法,该方法创建builder的新实例。这个太多了,有兴趣的小伙伴可以去下边的地址学习一下
(参考地址:https://projectlombok.org/features/Builder)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值