龙目岛——你绝对应该试一试

位置:首页>文章>详情   分类: Java教程 > 编程技术   阅读(234)   2024-01-15 07:14:57

Lombok 不是 Java 生态系统中的新事物,但我必须承认,我一直低估了它的价值,直到我尝试了它或者我被“说服”去尝试它。我没有看到添加一个生成代码的库有多大价值,这些代码现在可以由任何现代 IDE 轻松生成。所以我忽略了这个库,我一直在编写或生成大量的样板代码。不再。 2016 年,我加入了一个基于 Spring 的项目,其中已经有 Lombok 项目。从那以后我就不能没有 Lombok 工作了……为什么?

那么龙目岛到底是什么?

简而言之,Lombok 是一个 Java 库,它通过插入 IDE 和构建工具为开发人员生成大量代码。例如,不是添加 getterssettersequalshashCodetoString POJO 的方法,可以使用单个 [@Data](https://projectlombok.org/features/Data) 注释。

构建工具支持,如 Gradle 或 Maven,不会带来问题

Lombok 可以毫无问题地与 Gradle 配合使用。您在 Lombok 上添加 compileOnly 依赖项,基本上就是这样:

compileOnly ("org.projectlombok:lombok:${lombokVersion}")

我也没有遇到 Maven 的任何问题,尽管我主要从事与 Spring 相关的项目,最近它们都是基于 Gradle 的。

IntelliJ 支持足够好

我每天都在使用 IntelliJ,它对 Lombok 的支持工作得很好。 Lombok 由第 3 方插件支持:https://github.com/mplushnikov/lombok-intellij-plugin

插件的配置非常简单:您需要为项目启用 Lombok 插件和注解处理。当然,Lombok 必须在类路径中。配置项目后,您可以开始导入 Lombok 注释并立即开始在源代码中使用它们。

我没有注意到 IntelliJ 中的代码完成 问题。我没有注意到任何延迟或缺失的功能。当我想显示生成的方法的代码定义时,它会向我显示 Lombok 注释——这很好——但如果能看到生成的代码就好了。

不利的一面是,有时会发生代码无法立即使用的情况——然后需要执行手动编译。这对我来说真的很少见。

启用 Lombok 后,无法直接从代码编辑器访问某些功能。例如,当使用 @Builder 注释时,会生成很多代码,包括构建器类。要查找某些构建器方法的用法,您需要从 Structure 视图执行此操作。

在生成的代码中按名称导航到符号是不可能的,但这似乎不是问题:在使用 Lombok 时,您知道生成的代码与某些类相关。例如,UserBuilderUser 类相关,因此您可以跳转到 User 以查看其构建器(如果确实需要)。

总而言之,在进入 IntelliJ 时,每天都没有任何阻碍。

阅读代码更容易

使用 Lombok 的主要优点之一是需要阅读的代码更少。这在代码审查期间非常有用——我打开这个类,我立即看到它是一个贫血的 @Data 类还是一个 @Value 对象,如果它提供了 @Builder等尽管 Lombok 在源代码中需要更多注释(Lombok 注释、JPA 注释、Jackson 注释、Spring 注释……),它仍然使代码更简洁,更易于阅读/审查。

Lombok 标准化(一些)团队实践

例如,在我开始使用 Lombok 之前,在每个项目中都有几种创建构建器的方法。使用 Lombok,维护这些实践(@Builder@Singularity)要容易得多。

Lombok 与其他库配合良好

我没有遇到 JPA 或 Jakson 注释与 Lombok 注释混合的问题。不过,我听说过有关 MapStruct 和 Lombok 的问题,但现在似乎已修复:(https://github.com/mapstruct/mapstruct/issues/510)

Lombok 注释可以很容易地与 Spring 组件一起使用,从而在创建时需要更少的代码。例如 @AllArgsConstructor 可用于注入 bean 的依赖项,因为 Spring 不要求使用 @Autowire 注释构造函数:

@Service
@RequiredArgsContructor
class SomeService {
    private final Dep1 dep1;
    private final Dep2 dep2;
}

值得注意(也许)是 Spring Boot Initializer (http://start.spring.io/) 在生成的项目文件(核心之一)中提供了 Lombok 依赖项要添加到新项目的依赖项)。

考虑将 Lombok 用于您的下一个项目

Lombok 是一个很棒的库,可以加快开发速度,使代码更简洁,更易于阅读和维护。 Lombok 似乎成熟到可以尝试一下。即使您决定仅将其用于简单的案例,它也可以为您的项目带来很多价值。信不信由你,但我对 Lombok 持怀疑态度,直到我尝试了几个星期。

标签2: Java教程
地址:https://www.cundage.com/article/jcg-lombok-definitely-give-try.html

相关阅读

Java HashSet 教程展示了如何使用 Java HashSet 集合。 Java哈希集 HashSet 是一个不包含重复元素的集合。此类为基本操作(添加、删除、包含和大小)提供恒定时间性...
SpringApplicationBuilder 教程展示了如何使用 SpringApplicationBuilder 创建一个简单的 Spring Boot 应用程序。 春天 是用于创建企业应...
通道是继 buffers 之后 java.nio 的第二个主要新增内容,我们在之前的教程中已经详细了解了这一点。通道提供与 I/O 服务的直接连接。 通道是一种在字节缓冲区和通道另一端的实体(通...
课程大纲 Elasticsearch 是一个基于 Lucene 的搜索引擎。它提供了一个分布式的、支持多租户的全文搜索引擎,带有 HTTP Web 界面和无模式的 JSON 文档。 Elasti...
解析器是强大的工具,使用 ANTLR 可以编写可用于多种不同语言的各种解析器。 在这个完整的教程中,我们将: 解释基础:什么是解析器,它可以用来做什么 查看如何设置 ANTLR 以便在 Java...
Java 是用于开发各种桌面应用程序、Web 应用程序和移动应用程序的最流行的编程语言之一。以下文章将帮助您快速熟悉 Java 语言,并迈向 API 和云开发等更复杂的概念。 1. Java语言...
Java中的继承是指子类继承或获取父类的所有非私有属性和行为的能力。继承是面向对象编程的四大支柱之一,用于提高层次结构中类之间的代码可重用性。 在本教程中,我们将了解 Java 支持的继承类型,...
Java Message Service 是一种支持正式通信的 API,称为 网络上计算机之间的消息传递。 JMS 为支持 Java 程序的标准消息协议和消息服务提供了一个通用接口。 JMS 提...
之前,我介绍了spring 3 + hibernate 集成 示例和struts 2 hello world 示例。在本教程中,我将讨论在将 spring 框架与 struts 与 hibern...
Java 项目中的一项常见任务是将日期格式化或解析为字符串,反之亦然。解析日期意味着你有一个代表日期的字符串,例如“2017-08-3”,你想把它转换成一个代表 Java 中日期的对象,例如Ja...