lombok
Lombok在Java生态系统中并不是什么新鲜事物,但是我必须承认,在尝试它之前或在我“很确信”尝试之前,我总是低估了它的价值。 我发现添加一个库来生成代码的价值并不高,这些库可以被当今的任何现代IDE轻松生成。 因此,我忽略了该库,并且一直在编写或生成大量样板代码。 不再。 2016年,我加入了一个基于Spring的项目,其中Lombok项目已经就位。 从那时起,我就再也没有Lombok了……为什么?
那么,Lombok到底是什么?
简而言之,Lombok是一个Java库,可通过插入IDE和构建工具为开发人员生成大量代码。 例如, [@Data](https://projectlombok.org/features/Data)
向POJO添加getters , setters , equals , hashCode和toString方法之外,还可以使用单个[@Data](https://projectlombok.org/features/Data)
注释。
诸如Gradle或Maven之类的构建工具支持不会带来问题
Lombok与Gradle毫无问题。 您在Lombok上添加了compileOnly依赖关系,基本上就是这样:
compileOnly ("org.projectlombok:lombok:${lombokVersion}")
尽管我主要处理与Spring相关的项目,而且最近它们都基于Gradle,但我也没有遇到过Maven的任何问题。
IntelliJ支持足够好
我每天都在与IntelliJ一起工作,它对Lombok的支持效果很好。 第三方插件支持Lombok: https : //github.com/mplushnikov/lombok-intellij-plugin 。
插件的配置非常简单:您需要为项目启用Lombok插件和注释处理。 当然,Lombok必须在类路径中。 配置项目后,您可以开始导入Lombok批注,并立即在源代码中开始使用它们。
我没有注意到IntelliJ中代码完成的问题。 我没有发现任何延迟或功能缺失。 当我想为生成的方法显示代码定义时,它向我显示了Lombok批注-很好-尽管可以看到生成的代码,但会很好。
不利的一面是,有时会发生代码无法立即使用的情况,因此需要执行手动编译。 就我而言,这真的很少见。
启用Lombok后,无法直接从代码编辑器访问某些功能。 例如,使用@Builder
批注时,会生成许多代码,包括builder类。 要查找某些构建器方法的用法,您需要从“ 结构”视图中执行此操作。
在生成的代码中无法按名称导航到符号,但这似乎不是问题:使用Lombok时,您知道生成的代码与某些类相关。 例如, UserBuilder
与User
类相关,因此您可以跳到User
中查看其构建器(如果确实需要)。
总而言之,在IntelliJ上,每天都没有任何表演障碍。
阅读代码更容易
使用Lombok的主要优点之一是所需阅读的代码更少。 这在代码检查期间非常有用–我打开类,然后立即查看它是否是@Value
@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都持怀疑态度。
翻译自: https://www.javacodegeeks.com/2017/09/lombok-definitely-give-try.html
lombok