Java 开发中到底该不该用 Lombok?

简介: Java 开发中到底该不该用 Lombok?

Lombok !


爱它的人爱的要死,觉得它简直就是先进生产力的代表;讨厌它的人讨厌的要死,觉得它简直就是邪恶世界的轴心。今天松哥也小心翼翼的来和大家聊一聊这个话题:Java 开发中,到底该不该用 Lombok?

Lombok 简介


Lombok 并不是一个新的项目,相反,它已经有了一段并不算短的历史了,但是关于 Lombok 的争议一直就没有停止过,我们先来看看它是什么东西?

根据 Lombok 官网的介绍:

Lombok 是一个 java 库,可以自动插入编辑器并构建工具,为我们的 java 增添色彩,让开发者告别繁杂的 getter/setter 以及 equals 等方法,一个注解就可以使我们的类具有一个功能齐全的构建器。

咋一看,还是挺诱人的,我相信大家做 Java 开发对于样板化的代码 getter/setter 早已经不厌其烦,虽然可以使用开发工具自动生成,可是看那一大堆代码还是觉得有点烦,看到有人推荐 Kotlin,Kotlin 做 Android 还行,代替 Java 做企业级应用?呵呵。 Lombok 则可以帮助开发者简化样板代码,举一个简单的例子,原来你的一个 Java Bean 可能是这样:


public class User{
    private String name;
    private Long id;
    private String address;
    //getter/setter/toString/hashCode。。。
}

使用了 Lombok 之后,你的 Java Bean 就可以简化成这样了:

@Data
public class User{
    private String name;
    private Long id;
    private String address;
}

添加一个 @Data 注解,项目在编译器编译时通过操作 AST (抽象语法树) 来自动生成 getter/setter 、toString 、hashCode 等方法,利用这一特性,甚至可以像 JavaScript 一样不用显式声明变量类型:

val list = new ArrayList<User>();
list.add(new User());

的代码最终会被编译成:

final ArrayList<User></User> list = new ArrayList<User>();
list.add(new User());

等等还有很多其他的语法糖,像 @Cleanup、@Builder 等都是简化代码的能手,我这里只是随便的举两个例子。


因为这些代码都是编译之后才有的,所以开发者如果需要在 Java 代码中调用某一个对象的 get 方法(或者其他自动生成的方法),还需要引入一些开发工具的插件,才可以解决这个问题,这个我就不细说了,大伙有兴趣可以自行搜索了解下。


事情就是这么个事情,工具就是这么个工具,那么开发中到底用不用呢?


用还是不用?


支持使用 Lombok 的小伙伴,主要是觉得:

  • 使用了 Lombok 之后,代码干净整洁
  • 开发人员的工作量大大降低
  • 在一些刚立项的项目中,Bean 反复变化,要不停的修改了代码,要是有了 Lombok ,就不必这么麻烦了
  • 这是先进生产力的代表,不会用的都是太菜


反对 Lombok 的小伙伴当然也有自己的看法:

  • 这是歪门邪道,扰乱人的思路
  • 调试不便
  • 开发工具本来就可以一键生成
  • 一个第三方插件不应该改变 JAVA 语法


如果你在论坛上搜一下对于这个插件的看法,感觉世界大战都快要爆发了!


相关文章
|
1月前
|
监控 Java API
如何使用Java语言快速开发一套智慧工地系统
使用Java开发智慧工地系统,采用Spring Cloud微服务架构和前后端分离设计,结合MySQL、MongoDB数据库及RESTful API,集成人脸识别、视频监控、设备与环境监测等功能模块,运用Spark/Flink处理大数据,ECharts/AntV G2实现数据可视化,确保系统安全与性能,采用敏捷开发模式,提供详尽文档与用户培训,支持云部署与容器化管理,快速构建高效、灵活的智慧工地解决方案。
|
4天前
|
移动开发 前端开发 Java
Java最新图形化界面开发技术——JavaFx教程(含UI控件用法介绍、属性绑定、事件监听、FXML)
JavaFX是Java的下一代图形用户界面工具包。JavaFX是一组图形和媒体API,我们可以用它们来创建和部署富客户端应用程序。 JavaFX允许开发人员快速构建丰富的跨平台应用程序,允许开发人员在单个编程接口中组合图形,动画和UI控件。本文详细介绍了JavaFx的常见用法,相信读完本教程你一定有所收获!
Java最新图形化界面开发技术——JavaFx教程(含UI控件用法介绍、属性绑定、事件监听、FXML)
|
27天前
|
Java 开发者 微服务
Spring Boot 入门:简化 Java Web 开发的强大工具
Spring Boot 是一个开源的 Java 基础框架,用于创建独立、生产级别的基于Spring框架的应用程序。它旨在简化Spring应用的初始搭建以及开发过程。
48 6
Spring Boot 入门:简化 Java Web 开发的强大工具
|
14天前
|
存储 JavaScript 前端开发
基于 SpringBoot 和 Vue 开发校园点餐订餐外卖跑腿Java源码
一个非常实用的校园外卖系统,基于 SpringBoot 和 Vue 的开发。这一系统源于黑马的外卖案例项目 经过站长的进一步改进和优化,提供了更丰富的功能和更高的可用性。 这个项目的架构设计非常有趣。虽然它采用了SpringBoot和Vue的组合,但并不是一个完全分离的项目。 前端视图通过JS的方式引入了Vue和Element UI,既能利用Vue的快速开发优势,
79 13
|
19天前
|
算法 Java API
如何使用Java开发获得淘宝商品描述API接口?
本文详细介绍如何使用Java开发调用淘宝商品描述API接口,涵盖从注册淘宝开放平台账号、阅读平台规则、创建应用并申请接口权限,到安装开发工具、配置开发环境、获取访问令牌,以及具体的Java代码实现和注意事项。通过遵循这些步骤,开发者可以高效地获取商品详情、描述及图片等信息,为项目和业务增添价值。
52 10
|
12天前
|
前端开发 Java 测试技术
java日常开发中如何写出优雅的好维护的代码
代码可读性太差,实际是给团队后续开发中埋坑,优化在平时,没有那个团队会说我专门给你一个月来优化之前的代码,所以在日常开发中就要多注意可读性问题,不要写出几天之后自己都看不懂的代码。
51 2
|
22天前
|
JavaScript 安全 Java
java版药品不良反应智能监测系统源码,采用SpringBoot、Vue、MySQL技术开发
基于B/S架构,采用Java、SpringBoot、Vue、MySQL等技术自主研发的ADR智能监测系统,适用于三甲医院,支持二次开发。该系统能自动监测全院患者药物不良反应,通过移动端和PC端实时反馈,提升用药安全。系统涵盖规则管理、监测报告、系统管理三大模块,确保精准、高效地处理ADR事件。
|
1月前
|
开发框架 Java 关系型数据库
Java哪个框架适合开发API接口?
在快速发展的软件开发领域,API接口连接了不同的系统和服务。Java作为成熟的编程语言,其生态系统中出现了许多API开发框架。Magic-API因其独特优势和强大功能,成为Java开发者优选的API开发框架。本文将从核心优势、实际应用价值及未来展望等方面,深入探讨Magic-API为何值得选择。
55 2
|
1月前
|
监控 前端开发 Java
【技术开发】接口管理平台要用什么技术栈?推荐:Java+Vue3+Docker+MySQL
该文档介绍了基于Java后端和Vue3前端构建的管理系统的技术栈及功能模块,涵盖管理后台的访问、登录、首页概览、API接口管理、接口权限设置、接口监控、计费管理、账号管理、应用管理、数据库配置、站点配置及管理员个人设置等内容,并提供了访问地址及操作指南。
|
1月前
|
IDE Java 编译器
开发 Java 程序一定要安装 JDK 吗
开发Java程序通常需要安装JDK(Java Development Kit),因为它包含了编译、运行和调试Java程序所需的各种工具和环境。不过,某些集成开发环境(IDE)可能内置了JDK,或可使用在线Java编辑器,无需单独安装。
74 1