lombok_Lombok–您绝对应该尝试一下

lombok

Lombok在Java生态系统中并不是什么新鲜事物,但是我必须承认,在尝试它之前或在我“很确信”尝试之前,我总是低估了它的价值。 我发现添加一个库来生成代码的价值并不高,这些库可以被当今的任何现代IDE轻松生成。 因此,我忽略了该库,并且一直在编写或生成大量样板代码。 不再。 2016年,我加入了一个基于Spring的项目,其中Lombok项目已经就位。 从那时起,我就再也没有Lombok了……为什么?

那么,Lombok到底是什么?

简而言之,Lombok是一个Java库,可通过插入IDE和构建工具为开发人员生成大量代码。 例如, [@Data](https://projectlombok.org/features/Data)向POJO添加getterssettersequalshashCodetoString方法之外,还可以使用单个[@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时,您知道生成的代码与某些类相关。 例如, UserBuilderUser类相关,因此您可以跳到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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/334721.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

不相关子查询的工作方式是_课题组工作|Nucleic Acids Research|基于表达密度谱的特征子空间分离及相关单细胞转录组分群新算法...

大家好!为大家分享本课题组近期发表在Nucleic Acids Research的文章,题目为 “Entropy subspace separation-based clustering for noise reduction (ENCORE) of scRNA-seq data”,文章提出了一种基于表达密度谱的特征选择方法,能…

Mac OS 使用命令(scp/sftp)将本地文件上传到远程 Linux 服务器主机或者从远程主机下载文件到本地主机

文章目录一、使用 scp 命令(一)将本地的文件上传(上载/复制)到远程主机的指定目录下(二)将本地主机的目录内容(含目录本身)上传到远程主机指定的目录下1.将本地主机桌面上的目录 www…

java 9 module_Java 9:欢迎来到Module World

java 9 moduleJava 9已于9月21日正式发布,Eclipse从Eclipse Oxygen.1a(4.7.1a)支持Java 9,让我们进入模块世界。 从此处下载Java 9,并将其添加到Eclipse Installed JRE中,如下所示 就是这样,…

python提取html正文为txt,python 提取html文本的方法

假设我们需要从各种网页中提取全文,并且要剥离所有HTML标记。通常,默认解决方案是使用BeautifulSoup软件包中的get_text方法,该方法内部使用lxml。这是一个经过充分测试的解决方案,但是在处理成千上万个HTML文档时可能会非常慢。通…

Mac OS 通过配置窗口来连接远程主机

点击连接后,就跳到命令终端窗口中,输入远程主机 root 用户的登录密码,则完成连接。

温度补偿计算公式_一种工业用温度测量模块的设计与实现

一种工业用温度测量模块的设计与实现罗伯特侯0 引言温度是工业生产中最重要的参数之一,因此温度测量设备在工业领域不可或缺。热电偶是工业场合中应用最广泛的温度传感器,它的主要特点是测温范围宽,价格低,同时结构简单,坚固耐用。笔者采用高集成度、高精…

taskexecutor_弹簧和线程:TaskExecutor

taskexecutor在Web应用程序中使用线程并不罕见,尤其是当您必须开发长期运行的任务时。 考虑到spring,我们必须格外注意并使用它已经提供的工具,而不是生成我们自己的线程。 我们希望线程由spring管理,因此能够在没有任何影响的情…

Linux 命令之 find -- 查找文件和目录/搜索文件和目录

文章目录命令介绍语法格式常用选项文件类型参考示例(一)在当前目录及其子目录下搜索内容中含有“140.206.111.111”的所有文件(二)列出当前目录及其子目录下所有文件和目录(三)在指定目录下查找特定名称的文…

javaserver_什么是JavaServer Faces(JSF)–(第2部分)

javaserverFacelets声明语言 在第1部分中,我介绍了JavaServer Pages(JSF)背后的基本思想 。 在本文中,我想介绍Facelets声明语言 。 HTML标签 我们遇到的第一个标签是代表HTML元素HTML标签。 这些实际上只是HTML标记(…

微博如何发订阅消息_微信订阅号或将大变天,微博8年前就这么干了...

近日,微信又偷偷的做了一个大胆的尝试,将公众号消息排序改版,不再按照一直以来的“时间轴展示”,而是学起了微博,变成了“智能排序”。微信的“阅读效率优化”排序不过可能是为了独树一帜,微信管这种排序方…

html怎么填充颜色渐变,CSS实现不规则图形,填充渐变色

JS Bin/* 背景图片实现 */.background-box {width: 400px;height: 100px;/* 透明色替换为当前背景底色 */background:linear-gradient(-135deg, transparent 50px, red , yellow) top right;background-size: 50% 50%;background-repeat: no-repeat;}/* 边框实现 */.border-box…

Linux 命令之 locate -- 文件查找工具(查找文件/搜索文件)

文章目录一、命令介绍二、相关文件说明配置文件 updatedb.conf三、更新数据库四、常用选项五、命令示例搜索文件名以指定字符串开头的文件查找名称中含有指定字符串的文件使用正则表达式查找特定条件的文件一、命令介绍 locate 命令用来查找文件或目录。 locate 命令要比 find…

算法正义_正义联盟的Sprint Boot

算法正义正义联盟(Justice League)进入了黑暗时代,强大的Darkseid征服了人类。 蝙蝠侠在《神力女超人》的帮助下,努力使联盟与一个关键方面失联。 适当的正义联盟成员管理系统。 由于时间不在他们身边,他们不想经历繁琐…

indesign如何画弧线_彩铅画入门教程,如何给独角兽设计一款好发型

戳这里 → 查看“爱蜜干货文章目录”本次综合训练的目的1.挖掘你的绘画感和想象力,彩色鬃毛色彩大家可以自由发挥哦!2.练习彩铅的长线条,现在练习的长条还是比较简单的,下次综合训练我们还会练习更加复杂的3.彩铅这种画…

微型计算机作为载体的部件是,大工11秋《计算机应用基础》辅导资料二

计算机应用基础辅导资料二主题:计算机基础知识的辅导资料学习时间:2011年10月10日-10月16日内容:这周我们主要学习课件..第二章计算机的基础知识,本章的学习要求及需要掌握的重点内容如下&#…

Linux 命令之 whereis -- 显示命令及相关文件的路径

文章目录一、命令介绍二、选项参数三、参考示例(一)显示 ln 命令的程序和 man 手册页的位置(二)显示 tomcat 相关文件的路径一、命令介绍 whereis 命令用来定位指令的二进制程序、源代码文件和man手册页等相关文件的路径。 wher…

markdown如何设置图片大小_Gitee(码云)实现免费 Markdown 图床

“阅读本文大概需要 6 分钟前言Markdown是一种易于上手的轻量级标记语言,由于其目的在于注重文字内容而不是排版,目前很受大家欢迎,写完一篇文档可以直接复制到其他各大平台上,不用担心格式字体等混乱问题但是文章中如果引用了某个…

json-tree api_什么是JSON处理(JSON-P API)?

json-tree apiJava EE中的JSON-P简介 JSON处理1.0( JSR 353 )的Java API是一个低级,轻量级的JSON解析器和生成器,它提供了在属性和值级别上操作JSON数据的能力。 JSR 353提供了两种JSON处理模型: 对象模型和流模型。 …

适合利用计算机模拟的是,计算机模拟在数学建模中的应用

计算机模拟在数学建模中的应用计算机模拟是按时间来划分的,因为计算机模拟实质上是系统随时间变化而变化的动态写照,以下是小编搜集整理的一篇探究计算机模拟在数学建模应用的论文范文,供大家阅读参考。【摘要】本文主要阐述了如何利用计算机…

噪音声压和声功率的区别_南昌汽车隔音,深入了解汽车噪音的来源、危害以及解决方案...

汽车噪音带来的危害:汽车噪音对人体健康的影响是多方面的。噪音作用于人的中枢神经系统,使人们大脑皮层的兴奋与抑制平衡失调,导致条件反射异常,使脑血管张力遭到损害。这些生理上的变化,在早期能够恢复原状&#xff0…