Lombok的简介与使用以及总结

1 篇文章 0 订阅
1 篇文章 0 订阅
本文介绍了Lombok如何通过注解减少Java Bean代码冗余,包括加入Maven依赖,常用注解如@Data、@NonNull和@EqualsAndHashCode的使用,以及其优缺点和适用场景的讨论。
摘要由CSDN通过智能技术生成

前言

        我们在开发中经常需要花很多时间给JavaBean的属性写getter/setter方法和构造器等,这是一个漫长而又繁琐的过程。而Lombok应运而生,它可以用简单的注解形式来简化java代码,比如说可以使用几个注解就不需要编写getter/setter方法了。这篇文章将讲述lombok的使用和一些自己的总结。


一、Lombok简介

        Lombok 是一种 Java 实用工具,可用来帮助开发人员消除 Java 的冗长,尤其是对于简单的 Java 对象(POJO)。它通过注释实现这一目的。通过在开发环境中实现 Lombok,我们可以节省构建诸如 hashCode() 和 equals() 这样的方法以及以往用来分类各种 accessor 和 mutator 的大量时间。

        Lombo之所以能自动生成代码,最终够达到在源码中没有getter和setter方法,但是在编译生成的字节码文件中有getter和setter方法的效果,是因为它在注解解析上做了“手脚”。具体是如何实现的,这个就需要阅读源码了。博主还没有阅读过,这里只是简单的讲下它的使用说明,以及自己的一些经验总结。

GitHub链接:https://github.com/rzwitserloot/lombok

二、Lombok使用

1、加入maven依赖

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.18.12</version>
</dependency>

2、常用注解介绍

@Date

@Data注解在类上,会为类的所有属性自动生成setter/getter、equals、canEqual、hashCode、toString方法,如果是final属性,则不会为该属性生成setter方法。


@Getter/@Setter

使用@Getter/@Setter注解,此注解在属性上,可以为相应的属性自动生成Getter/Setter方法。


@NonNull

该注解用在属性或构造器上,Lombok会生成一个非空的声明,可用于校验参数,能帮助避免空指针。


@EqualsAndHashCode

自动生成 equals(Object other) 和 hashcode() 方法。说到这个方法,就要说说equals和hashcode的关系了。

由于equals比较的太全面比较复杂,所以每当需要对比的时候,首先用hashCode()去对比,如果hashCode()不一样,则表示这两个对象肯定不相等(也就是不必再用equal()去再对比了),如果hashCode()相同,此时再对比他们的equal(),如果equal()也相同,则表示这两个对象是真的相同了,这样既能大大提高了效率也保证了对比的绝对正确性。


@NoArgsConstructor, @RequiredArgsConstructor 和 @AllArgsConstructor

分别对应无参构造器、部分参数构造器、全参构造器。Lombok没法实现多种参数构造器的重载。


@Slf4j

注解在类,生成log变量,严格意义来说是常量,要打日志就可以直接打,不用再手动 new log 静态常量了。


三、总结

优点:

  • 让代码变得简洁
  • 通过注解的形式消除 Java 的冗长且编译时自动生成,提高了一定的开发效率。

缺点:

  • 不支持多种参数构造器的重载
  • 降低了源代码的可读性和完整性
  • 需要强制下载Lombok插件

        对于我来说Lombok是一个好用的工具,在一般的项目开发中都可以用得上,但是在逻辑业务比较复杂的情况下,及并不推荐了,我们结合具体业务场景和项目实际情况。比如说,我现在有个十分复杂的业务,在getter/setter加一点点业务代码,就能极大的简化业务场景的代码,那我为什么还要使用Lombok呢。

        硬币都有正反两面,Lombok也有它优点和缺点,结合具体业务场景和项目实际情况,灵活运用才是王道。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值