news 2026/5/21 9:08:06

<span class=“js_title_inner“>扔了 Lombok 吧,MapStruct + Records 更爽!</span>

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
<span class=“js_title_inner“>扔了 Lombok 吧,MapStruct + Records 更爽!</span>

👉这是一个或许对你有用的社群

🐱 一对一交流/面试小册/简历优化/求职解惑,欢迎加入「芋道快速开发平台」知识星球。下面是星球提供的部分资料:

  • 《项目实战(视频)》:从书中学,往事上“练”

  • 《互联网高频面试题》:面朝简历学习,春暖花开

  • 《架构 x 系统设计》:摧枯拉朽,掌控面试高频场景题

  • 《精进 Java 学习指南》:系统学习,互联网主流技术栈

  • 《必读 Java 源码专栏》:知其然,知其所以然

👉这是一个或许对你有用的开源项目

国产Star破10w的开源项目,前端包括管理后台、微信小程序,后端支持单体、微服务架构

RBAC权限、数据权限、SaaS多租户、商城、支付、工作流、大屏报表、ERP、CRMAI大模型、IoT物联网等功能:

  • 多模块:https://gitee.com/zhijiantianya/ruoyi-vue-pro

  • 微服务:https://gitee.com/zhijiantianya/yudao-cloud

  • 视频教程:https://doc.iocoder.cn

【国内首批】支持 JDK17/21+SpringBoot3、JDK8/11+Spring Boot2双版本

来源:程序猿DD

  • 🧙‍♂️ Lombok的问题

  • 🚪 是时候和 Lombok 分手了

  • 🧾 为什么 Java Records > Lombok @Data

  • 🎯 MapStruct:真正的映射,而非猜测

  • 🎁 我们获得了什么?

  • 🧠 小结


Lombok作为一个广受欢迎的Java开发工具,通过注解的方式帮助我们消除样板代码,提升开发效率。但随着项目的发展,它也带来了一些令人困扰的问题。

🧙‍♂️ Lombok的问题

  • 代码可读性差- 大量使用@Data@Builder等注解后,实际生成的代码变得不可见,增加了代码审查和维护的难度

  • IDE支持不稳定- 与IDE的集成经常出现问题,导致代码提示失效、编辑器卡顿等问题

  • 运行时行为不可控- 注解自动生成的方法(如equals、hashCode)可能产生意外的运行时行为

  • 调试困难- 由于代码是在编译时生成的,调试过程中难以追踪具体实现

这些问题导致团队在开发过程中经常遇到困惑:"这个getter是从哪里来的?"、"为什么equals方法会这样实现?"。虽然表面上代码看起来简洁,但实际上增加了项目的维护成本。

基于 Spring Boot + MyBatis Plus + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能

  • 项目地址:https://github.com/YunaiV/ruoyi-vue-pro

  • 视频教程:https://doc.iocoder.cn/video/

🚪 是时候和 Lombok 分手了

有一天,我们决定移除Lombok! 然后,我们做了一个实验:

  1. 用Java Records替换@Data

  2. 用真正的构造函数替换@Builder

  3. MapStruct替换那些笨重的ModelMapper/Lombok DTO 组合。

结果怎样?一切都变好了!

基于 Spring Cloud Alibaba + Gateway + Nacos + RocketMQ + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能

  • 项目地址:https://github.com/YunaiV/yudao-cloud

  • 视频教程:https://doc.iocoder.cn/video/

🧾 为什么 Java Records > Lombok @Data

Lombok:

@Data public class User { private String name; private int age; }

对比

Java Records:

public record User(String name, int age) {}

哪一个更具可读性?更类型安全?更适合不变性?

Records:

  • 默认是 final 且不可变的。

  • 生成构造函数、equalshashCodetoString——所有这些都是可见的。

  • 与 IDE 和序列化工具配合良好。

额外好处:你不需要仅仅为了写一个有两个字段的类就引入一个外部依赖。

🎯 MapStruct:真正的映射,而非猜测

现在介绍另一位英雄:MapStruct

我们曾经有这样的类:

class UserEntity { private String name; privateint age; // 通过 Lombok 实现的 setters 和 getters } class UserDTO { private String name; privateint age; // 通过 Lombok 实现的 setters 和 getters }

然后是:

UserDTO dto = modelMapper.map(userEntity, UserDTO.class);

优雅,对吧?直到它不再优雅。

  • 字段无声无息地停止了映射。

  • 调试变成了一场猜谜游戏。

  • 嵌套映射变成了噩梦。

使用MapStruct,我们这样做:

@Mapper public interface UserMapper { UserDTO toDto(UserEntity user); }

编译时检查。清晰。明确。快速。

没有反射,没有运行时意外。只有可预测、可读、真正的映射。

🎁 我们获得了什么?

  • 减少了 80% 的样板代码。真的。

  • 零 IDE 问题。再也没有奇怪的自动补全 bug。

  • 更好的入职体验。新来的开发者不需要 Lombok 解码器。

  • 编译时安全。在映射错误在生产环境中造成麻烦之前就捕捉到它们。

🧠 小结

Lombok 在它那个时代是很出色的,但是 Java 在不断进化了,是时候抛弃它了!

  • 用 Records 替换@Data

  • 放弃@Builder并使用构造函数(如果需要,可以使用MapStruct 的构建器)。

  • 用 MapStruct 替换 ModelMapper

你将会编写更少的注解,调试更少的 Bug,并最终真正地掌控你自己的代码,然后睡个好觉,获得更多的头发!


欢迎加入我的知识星球,全面提升技术能力。

👉 加入方式,长按”或“扫描”下方二维码噢

星球的内容包括:项目实战、面试招聘、源码解析、学习路线。

文章有帮助的话,在看,转发吧。 谢谢支持哟 (*^__^*)
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/13 22:55:40

盲盒潮玩一番赏小程序开发核心要点与行业适配分析

随着潮玩经济持续升温,一番赏凭借“梯度奖项100%中奖”的核心逻辑,成为盲盒赛道的新增长点,而小程序因轻量化、高触达、强社交的优势,成为一番赏线上落地的首选载体。本文立足CSDN技术开发者视角,拆解盲盒潮玩一番赏小…

作者头像 李华
网站建设 2026/5/20 22:12:28

【课程设计/毕业设计】基于ssm的教育信息化高考志愿辅助填报系统的设计与开发高考志愿智能推荐系统设计与实现【附源码、数据库、万字文档】

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华
网站建设 2026/5/20 13:48:37

零基础转计算机不迷茫!2026 就业全景分析:岗位拆解 + 分阶精通路径

2025计算机就业全景分析:岗位需求分析 一、行业需求分化 热门领域需求旺盛:人工智能、大数据、云计算、网络安全、芯片设计、自动驾驶等领域技术迭代快,高端人才缺口大。 传统互联网岗位饱和:前端、后端开发等基础岗位因前几年扩…

作者头像 李华
网站建设 2026/5/20 11:14:15

工厂老板犹豫不签单?用这招击中他的决策要点

很多销售在面对工厂老板的时候,常常会陷入到“反复沟通却迟迟不能做出决定”的困境之中。对方看了报价、试了样品、方案也进行了修改,但总说:“再看看”“不急”“等资金到位”。其实事实上,老板不是不想合作,而是你没…

作者头像 李华
网站建设 2026/5/20 11:13:44

公链钱包开发:跨链通信、量子安全与DeFi生态的“三重革命”

引言:数字钱包——区块链世界的“入口之战” 2025年,全球加密货币用户突破5亿,链上资产总价值超8万亿美元。在这场金融革命中,数字钱包作为用户与区块链交互的核心工具,正经历从“存储工具”到“生态入口”的范式转变…

作者头像 李华