lombok简化实体类代码

本文介绍了Java开发工具Lombok中的关键注解,如@Builder用于生成构建器、@NonNull进行非空检查、@Cleanup自动资源管理等,展示了如何通过这些注解简化JavaBean的编写,提升代码效率和可读性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

lombok是一个可以帮助我们简化java代码编写的工具类,尤其是简化javabean的编写,即通过采用注解的方式,消除代码中的构造方法,getter/setter等代码,使我们写的类更加简洁,当然,这带来的副作用就是不易阅读…不过,还是能看得懂吧,废话不多说,先看一下lombok支持的一些常见的注解。

一、添加依赖

<!-- lombok依赖包 -->
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.16.10</version>
    <scope>provided</scope>
</dependency>

二、常用注解

1.@Builder

作用域:类。

作用:生成构建器。可以通过类名点属性(赋值),如:User.name("小明")。

注:会自动生成全参构造方法,可能会导致默认无参构造方法失效。


@Builder

2.@NonNull

作用域:成员变量、方法参数。

作用:会自动产生一个关于此参数的非空检查,如果参数为空,则抛出一个空指针异常。


@NonNull

3.@Cleanup

作用域:变量。

作用:可以保证此变量代表的资源会被自动关闭,默认是调用资源的close()方法,如果该资源有其它关闭方法,可使用@Cleanup(“close”)来指定要调用的方法 。


@Cleanup

// 实例,自动关闭IO流
@Cleanup ByteArrayOutputStream baos = new ByteArrayOutputStream();

 4.@Getter/@Setter

作用域:类、成员变量。

作用:为成员变量生成对应的get和set方法,为生成的方法指定访问修饰符,默认为public。


@Getter/@Setter

5.@ToString

作用域:类。

作用:生成toString方法。

注:@ToString有多个属性可以进一步设置:

  • callSuper 是否输出父类的toString方法,默认为false。
  • includeFieldNames 是否包含字段名称,默认为true。
  • exclude 排除生成tostring的字段。
  • of 只生成tostring的字段。

@ToString
@ToString(exclude={"column1","column2"})// 排除多个column列所对应的元素
@ToString(of={"column1","column2"})// 只生成包含多个column列所对应的元素

6.@EqualsAndHashCode

作用域:类。

作用:生成equals和hashcode方法 。


@EqualsAndHashCode

7.@NoArgsConstructor

作用域:类。

作用:生成无参构造。


@NoArgsConstructor

 8.@RequiredArgsConstructor

作用域:类。

作用:为类中需要特殊处理的字段生成构造方法,比如final和被@NonNull注解的字段。

 @RequiredArgsConstructor

 9.@AllArgsConstructor

作用域:类。

作用:生成全参构造。

 @AllArgsConstructor

10.@Data

作用域:类。

作用:相当于同时加上以下注解@Setter @Getter,@ToString,@EqualsAndHashCode。


@Data

11.@Value

作用域:成员变量。

作用:从配置文件读取值或进行赋值。

注:@Value("${spring.application.name}")若配置文件中没有,则在启动项目时报错,若想避免该情况可以给定默认值,@Value("${spring.application.name:张三}")若配置文件中没有该配置则直接使用xiaoming进行赋值。


@Value

// 实例一
@Value("张三")
private String name;// name=张三

// 实例二
@Value("${spring.application.name}")
private String name;// 若配置文件中没有则启动项目时报错

// 实例三
@Value("${spring.application.name:张三}")
private String name;// 若配置文件中没有则name=张三,若配置文件有则获取配置文件的值

12.@SneakyThrows 

作用域:方法。

作用:可以将方法中的代码用try-catch语句包裹起来,捕获异常并在catch中用Lombok.sneakyThrow(e)把异常抛出。

注:可以在注解上指定捕获的异常,如@SneakyThrows (Exception.class)。


@SneakyThrows

 13.@Synchronized

作用域:方法。

作用:同步方法安全的转化,注解后面可以指定锁对象。

注:效果和synchronized关键字相同,区别在于锁对象不同,对于类方法和实例方法,synchronized关键字的锁对象分别是类的class对象和this对象,而@Synchronized得锁对象分别是私有静态final对象LOCK和私有final对象lock。


@Synchronized

14.@Slf4j

作用域:类。

作用:生成log变量,严格意义来说是常量。可以选择不同的日志级别进行输出。

注:针对不同的日志实现产品,有不同的日志注解,除了@Slf4j,还可以使用 @Log4j 、 @Log4j2 、 @Log等注解,来使用不同的日志产品。


@Slf4j

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

i源

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

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

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

打赏作者

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

抵扣说明:

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

余额充值