推荐一款代码神器,代码量至少省一半!

简介: 在我们 Java 项目里面,有很多 Java Bean 需要为每个属性生成 get/ set 方法,增删改属性都需要维护这些 get/ set 方法甚是麻烦。今天给大家介绍一款能帮助我们简化这些代码的神器:Lombok!有了这个神器,你的 Java Bean 类的代码量至少可以省一半。

在我们 Java 项目里面,有很多 Java Bean 需要为每个属性生成 get/ set 方法,增删改属性都需要维护这些 get/ set 方法甚是麻烦。


今天给大家介绍一款能帮助我们简化这些代码的神器:Lombok!有了这个神器,你的 Java Bean 类的代码量至少可以省一半。


什么是Lombok?

https://www.projectlombok.org/


打开它的官网,这是它的简介。


Project Lombok is a java library that automatically plugs into your editor and build tools, spicing up your java.

Never write another getter or equals method again. Early access to future java features such as val, and much more.


翻译过来就是说,Lombok项目是一个 Java 库,它能够自动嵌入到你的 IDE 编辑器和编译工具中。有了它,你再也不用写 getter 或者 equals 方法了,还有 val 特性等。


总之,有了这个家伙,可以省掉很多代码的编写,大大减少了工作量和维护的难度。


如何使用Lombok?

1、安装插件和配置依赖

image.png


如上图所示,Lombok支持所有主流的 IDE 开发工具及编译构建工具。


在 IDEA 中安装 Lombok 插件,这样在使用 Lombok 的时候就不会编译报错。


image.png


下面是 Maven 的依赖配置,在用 Maven 打包的时候也能自动生成需要的代码。

<dependency>
  <groupId>org.projectlombok</groupId>
  <artifactId>lombok</artifactId>
  <version>1.18.2</version>
  <scope>provided</scope>
</dependency>

如果你使用了 Spring Boot,可以不用带版本号,在 Spring Boot spring-boot-dependencies.pom 这个配置文件里面定义了 Lombok 依赖。image.png所以,你只需要继承版本号即可,当然,有必要的话,你也可以自定义版本号。

<dependency>
  <groupId>org.projectlombok</groupId>
  <artifactId>lombok</artifactId>
  <scope>provided</scope>
</dependency>

2、使用注解简化代码

从 IDEA 中的 Lombok 插件特性可以看到支持的注解。

Features
@Getter and @Setter
@FieldNameConstants
@ToString
@EqualsAndHashCode
@AllArgsConstructor, @RequiredArgsConstructor and @NoArgsConstructor
@Log, @Log4j, @Log4j2, @Slf4j, @XSlf4j, @CommonsLog, @JBossLog, @Flogger
@Data
@Builder
@Singular
@Delegate
@Value
@Accessors
@Wither
@SneakyThrows
from Intellij 14.1 @val
from Intellij 15.0.2 @var
from Intellij 14.1 @var
from Intellij 2016.2 @UtilityClass
Lombok config system
Code inspections
Refactoring actions (lombok and delombok)

也可以去 Lombok 对应的包里面看所有支持的注解。

现在挑几个讲一下它们的用法吧!

@Getter 和 @Setter

@Getter
@Setter
public class User {
  private String name;
  private int age;
  ...
  // 无需生成 get/set 方法
}

添加 @Getter@Setter 注解用在 Java Bean 类上面,无需生成 get/ set 方法,会自动生成所有的 get/ set 方法及一个默认的构造方法。

也可以用插件来添加相应的注解。

image.png

来看下源码和生成后的代码对比。

image.png@Getter@Setter 注解也可以单独使用在字段上面,同样也会生成对应的 get/ set 方法及一个默认的构造方法。

@ToString

使用在类上,默认生成所有非静态字段以下面的格式输出,如:

public String toString(){
    return "Person(userName=" + getUserName() + ", id=" + getId() + ", age=" + getAge() + ", address=" + getAddress() + ", memo=" + getMemo() + ")";
}

里面也有很多参数,用来自定义输出格式。


@NoArgsConstructor


用在类上,用来生成一个默认的无参构造方法。


@RequiredArgsConstructor


用在类上,使用类中所有带有 @NonNull 注解和 final 类型的字段生成对应的构造方法。


@AllArgsConstructor


用在类上,生成一个所有参数的构造方法,默认不提供无参构造方法。


@Data


用在类上,等同于下面这几个注解合集。


@Getter

@Setter

@RequiredArgsConstructor

@ToString

@EqualsAndHashCode

@Value


用在类上,等同于下面这几个注解合集。


@Getter

@FieldDefaults(makeFinal=true, level=AccessLevel.PRIVATE)

@AllArgsConstructor

@ToString @EqualsAndHashCode}

@NonNull


用在属性上,用于字段的非空检查,如果传入到 set 方法中的值为空,则抛出空指针异常,该注解也会生成一个默认的构造方法。


还有很多,这里不再撰述。


总结

本文介绍了 Lombok 及使用说明,更多的注解使用方式可以去源码里面看吧,有了这个插件,可以帮助你写出更简洁、更优雅、更漂亮的 Java 代码。


相关文章
|
Oracle Java 关系型数据库
使用了这个神器,让我的代码bug少了一半(下)
使用了这个神器,让我的代码bug少了一半(下)
使用了这个神器,让我的代码bug少了一半(下)
|
7月前
|
消息中间件 前端开发 关系型数据库
🤔️测试问我:为啥阅读量计数这么简单的功能你都能写出bug?
🤔️测试问我:为啥阅读量计数这么简单的功能你都能写出bug?
|
机器学习/深度学习 Cloud Native
【刷题日记】931. 下降路径最小和
本次刷题日记的第 71 篇,力扣题为:931. 下降路径最小和 ,中等
106 0
|
算法 测试技术 C#
C++前缀和算法的应用:装包裹的最小浪费空间 原理源码测试用例
C++前缀和算法的应用:装包裹的最小浪费空间 原理源码测试用例
|
安全 Windows
这5款软件虽然知名度不高,但不代表不好用
其实有许多工具,知名度不高,用的人也很少,不过并不代表它们不好用,小编励志做一个合格的搬运工,让大家都能用上好用的软件。
117 1
|
缓存 监控 Kubernetes
包体积优化 · 实战论 · 怎么做包体积优化? 做好能晋升吗? 能涨多少钱?
包体积优化 · 实战论 · 怎么做包体积优化? 做好能晋升吗? 能涨多少钱?
446 0
包体积优化 · 实战论 · 怎么做包体积优化? 做好能晋升吗? 能涨多少钱?
|
前端开发
给大家科普一泛二级程序前端几十套模板随机切换
​ 今天给大家分享几个小旋风蜘蛛池的泛二级程序网站站群模板,是无备案 新域名都可以用 老域名备案域名效果更好, 文章自动配图 关键词自动配图 泛二级程序模板是一款专门为了要从事相关工程方面工作的
130 0
|
搜索推荐 5G 数据安全/隐私保护
想要网站流量好,这一步不可少
想要网站流量好,这一步不可少
224 0
想要网站流量好,这一步不可少
|
JavaScript 前端开发 安全
让你写代码和写诗一样,良好的规范就是成功的一半。
随着一个项目的开发的日益庞大,参与开发的人员也越来越多,这就出现了怎么样更好的协作的问题。当然一个好的代码规范是一个项目走向成功的基石。如果在开发中每个小伙伴都各行其事,那这个项目势必会出现各种问题,导致开发效率低下,后期维护特别麻烦等诸多问题。
|
安全 Java 测试技术
使用了这个神器,让我的代码bug少了一半(上)
使用了这个神器,让我的代码bug少了一半
使用了这个神器,让我的代码bug少了一半(上)