Idea lombok简化Entity对象代码

lombok的作用一句就是简化bean,entity等类的get、set、toString、equals和hashCode方法,虽然现在市面上的IDE基本都支持通过快捷键自动生成这些,但自动生成这些代码后,如果bean中的属性一旦有修改、删除或增加时,需要重新生成或删除get/set等方法,给代码维护增加负担,而通过lombok就可以免去代码修改时重新维护的工作量;另外还有日志、校验非空、同步锁、关流等功能注解

项目中经常使用bean,entity等类,绝大部分数据类类中都需要get、set、toString、equals和hashCode方法,虽然eclipse和idea开发环境下都有自动生成的快捷方式,但自动生成这些代码后,如果bean中的属性一旦有修改、删除或增加时,需要重新生成或删除get/set等方法,给代码维护增加负担。而使用了lombok则不一样,使用了lombok的注解之后,就不需要编写或生成get/set等方法,很大程度上减少了代码量,而且减少了代码维护的负担,而且代码相当简洁。

源码仓库

lombok:
https://github.com/mplushnikov/lombok-intellij-plugin

已支持注解:

在这里插入图片描述

依赖

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

插件安装:

在这里插入图片描述
@Data 注解相当于@Getter @Setter @RequiredArgsConstructor @ToString @EqualsAndHashCode注解的“五合一”合集,它会根据成员变量自动生成相应的get方法、set方法、构造器、toString方法以及equalshashCode方法。注意final修饰的成员变量不会生成相应的set方法,也不会参与构造器的生成,transient修饰的成员变量则不会参与equals和hashCode方法的生成。
@Data注解有一个可选项staticConstructor,可以通过将该选项的值设置为of来生成一个静态的构造器。
@Value注解相当于@Getter @FieldDefaults(makeFinal=true, level=AccessLevel.PRIVATE) @AllArgsConstructor @ToString @EqualsAndHashCode的“五合一”合集,它会按照不可变类的方式去生成代码。它会将所有成员变量声明为private final变量,生成包含所有变量的构造器以及gettertoStringequalshashCode方法。下面看一下实际效果。

@NoArgsConstructor、@RequiredArgsConstructor和@AllArgsConstructor都作用于类上,分别用于生成无参构造器、指定参数构造器和全参构造器。@RequiredArgsConstructor指定的参数是指final修饰的成员变量以及有约束条件(如用@NonNull修饰)的成员变量。暂时没有可自定义构造方法的能力

@Builder 用于实现23种设计模式中的构建器模式,该模式通常用于构造包含多个成员变量的类。构建器模式声明一个公有的静态构建器,然后声明所有成员变量的同名方法,返回构建器,这样就可以实现链式调用,最后通过build()方法调用私有构造器,完成对象的创建,从而简化代码

@Log 省去了在实体类中添加 getLogger的如下代码:
private static final java.util.logging.Logger log = java.util.logging.Logger.getLogger(LombokTest.class.getName());

@NonNull注解作用于类的成员变量、方法、参数以及局部变量上。如果放在参数上,lombok将在方法/构造器方法体内最开始的位置插入空值检测的语句,如果变量值为null,将抛出空指针异常。如果放在成员变量上,任何为该变量赋值的方法(如set方法和构造器)中将生成空值检测语句

@Cleanup注解用在局部变量上,用于关闭指定的资源,如输入输出stream流,功能类似于try-with-resources特性或try-with-finally。

@Synchronized注解作用于方法上,类似于synchronized关键字,它生成一个私有的变量,将同步锁加在私有变量上

样例

  • 如果使用的idea的话,可以在stucture中实时看到效果
    在这里插入图片描述
  • 编译后的class文件
    在这里插入图片描述
    lombok主要用于简化Java重复代码,提高开发效率
    @Data、@Value这两个合集用于简化实体类的重复代码,一个可变一个不可变,在一般情况下这俩注解就够用了。但是如果要订制getter、setter等方法,就需要使用各个注解了。
    @Builder注解用于实现构造器模式,方便多成员变量的实体类的构造。
    @Cleanup注解用于关闭资源,功能类似于try-with-resources特性。
    @NonNull注解用于对参数和成员变量进行空值检测。
    @Synchronized注解用于更优雅地实现同步锁。
    @val注解用于体验java未来的功能——动态变量类型。

另外一个可简化代码的组件(不太建议)
MapStructhttps://juejin.im/entry/5b228c2651882574b15882ba

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值