Lombok 不是 Java 生态系统中的新事物,但我必须承认,我一直低估了它的价值,直到我尝试了它或者我被“说服”去尝试它。我没有看到添加一个生成代码的库有多大价值,这些代码现在可以由任何现代 IDE 轻松生成。所以我忽略了这个库,我一直在编写或生成大量的样板代码。不再。 2016 年,我加入了一个基于 Spring 的项目,其中已经有 Lombok 项目。从那以后我就不能没有 Lombok 工作了……为什么?
简而言之,Lombok 是一个 Java 库,它通过插入 IDE 和构建工具为开发人员生成大量代码。例如,不是添加 getters、setters、equals、hashCode 和 toString POJO 的方法,可以使用单个 [@Data](https://projectlombok.org/features/Data)
注释。
Lombok 可以毫无问题地与 Gradle 配合使用。您在 Lombok 上添加 compileOnly 依赖项,基本上就是这样:
compileOnly ("org.projectlombok:lombok:${lombokVersion}")
我也没有遇到 Maven 的任何问题,尽管我主要从事与 Spring 相关的项目,最近它们都是基于 Gradle 的。
我每天都在使用 IntelliJ,它对 Lombok 的支持工作得很好。 Lombok 由第 3 方插件支持:https://github.com/mplushnikov/lombok-intellij-plugin。
插件的配置非常简单:您需要为项目启用 Lombok 插件和注解处理。当然,Lombok 必须在类路径中。配置项目后,您可以开始导入 Lombok 注释并立即开始在源代码中使用它们。
我没有注意到 IntelliJ 中的代码完成 问题。我没有注意到任何延迟或缺失的功能。当我想显示生成的方法的代码定义时,它会向我显示 Lombok 注释——这很好——但如果能看到生成的代码就好了。
不利的一面是,有时会发生代码无法立即使用的情况——然后需要执行手动编译。这对我来说真的很少见。
启用 Lombok 后,无法直接从代码编辑器访问某些功能。例如,当使用 @Builder
注释时,会生成很多代码,包括构建器类。要查找某些构建器方法的用法,您需要从 Structure 视图执行此操作。
在生成的代码中按名称导航到符号是不可能的,但这似乎不是问题:在使用 Lombok 时,您知道生成的代码与某些类相关。例如,UserBuilder
与 User
类相关,因此您可以跳转到 User
以查看其构建器(如果确实需要)。
总而言之,在进入 IntelliJ 时,每天都没有任何阻碍。
使用 Lombok 的主要优点之一是需要阅读的代码更少。这在代码审查期间非常有用——我打开这个类,我立即看到它是一个贫血的 @Data
类还是一个 @Value
对象,如果它提供了 @Builder
等尽管 Lombok 在源代码中需要更多注释(Lombok 注释、JPA 注释、Jackson 注释、Spring 注释……),它仍然使代码更简洁,更易于阅读/审查。
例如,在我开始使用 Lombok 之前,在每个项目中都有几种创建构建器的方法。使用 Lombok,维护这些实践(@Builder
和 @Singularity
)要容易得多。
我没有遇到 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 持怀疑态度,直到我尝试了几个星期。
标签2: Java教程地址:https://www.cundage.com/article/jcg-lombok-definitely-give-try.html