Lombok 基础

Lombok 基本注解

Lombok 高级注解

Lombok FAQ

original icon
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.knowledgedict.com/tutorial/lombok-intro.html

Lombok 介绍


Lombok(Project Lombok)是一个用于 Java 编程语言的开源库,旨在减少 Java 代码中的冗余和样板代码,提高开发人员的生产力。它通过使用注解来自动生成 Java 类的常见方法和代码,从而使开发人员能够编写更简洁、更具可读性和更易维护的代码。Lombok 的主要目标是简化 Java 开发,减少样板代码,使代码更加精炼,从而提高开发效率。

它利用注解方式自动生成 java bean 中 getter、setter、equals 等方法,还能自动生成 logger、toString、hashCode、builder 等 日志相关变量、Object 类方法或设计模式相关的方法,能够让你的 代码更简洁,更美观。

历史背景

Lombok 项目于 2009 年首次发布,最初是由荷兰人 Reinier Zwitserloot 创建的。它的目标是简化 Java 开发,尤其是在 Java 领域的项目中减少样板代码。Lombok 的思想受到了其他编程语言中的注解处理器和元编程的启发,它的出现是为了解决 Java 语言在某些方面的不足。

作用

Lombok 提供了多个注解,每个注解都用于生成特定的常见代码结构。

以下是一些常用的 Lombok 注解及其作用:

  • @Getter@Setter :用于自动生成类的 getter 和 setter 方法。
  • @NoArgsConstructor@AllArgsConstructor :生成无参和全参构造函数。
  • @ToString :生成 toString() 方法,方便对象的字符串表示。
  • @EqualsAndHashCode :生成 equals()hashCode() 方法。
  • @Data :结合了 @Getter@Setter@ToString@EqualsAndHashCode 等,生成全套常见方法。
  • @Builder :生成 Builder 模式相关的代码,用于构建不可变对象。
  • @Value :生成不可变类,所有字段都是 final 的,适合创建值对象。
  • @Slf4j :自动生成 Slf4j 日志记录器。

通过使用这些注解,开发人员可以减少冗余的代码编写,提高代码质量,并降低了出错的机会。

引入

Maven

lombok 是一个 jar 包,maven 中引入如下依赖即可:

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

scope 可以是 provided,即只在编译和测试阶段生效,运行阶段已经编译好或容器提供即可。

Gradle

gradle 引入 lombok 示例如下:

repositories {
	mavenCentral()
}

dependencies {

	compileOnly 'org.projectlombok:lombok:1.18.16'
	annotationProcessor 'org.projectlombok:lombok:1.18.16'

	testCompileOnly 'org.projectlombok:lombok:1.18.16'
	testAnnotationProcessor 'org.projectlombok:lombok:1.18.16'

}

也是只在编译和测试阶段生效即可。

总结

总之,Lombok 是一个有助于减少 Java 代码冗余和提高开发效率的强大工具。它的使用可以显著简化 Java 开发过程,提高代码的可读性和可维护性,从而让开发人员能够更专注于业务逻辑而不是样板代码。

Nginx 是由1994年毕业于俄罗斯国立莫斯科鲍曼技术大学的 Igor Sysoeyv 为俄罗斯访问量居首的 rambler.ru 站点设 ...
HBase 是一个开源的非关系型分布式数据库,它是 Apache 的 Hadoop 项目的一部分,运行于 HDFS 文件系统之上,其参考了 ...
推荐系统是一种信息过滤系统,用于预测用户对物品的“评分”或“偏好”。推荐系统近年来非常流行,应用于各行各业。推荐的对象包括:电影、音乐、新闻 ...
MLlib 是 Spark 中可扩展的机器学习库,它由一系列机器学习算法和实用程序组成, 包括分类、回归、聚类、协同过滤、降维,还包括一些底 ...
特征工程,是指用一系列工程化的方式从原始数据中筛选出更好的数据特征,以提升模型的训练效果。特征工程是机器学习、深度学习中不可或缺的一部分,在 ...