lombok详解和 Lombok 造成的翻车事故,太坑了!

发布于 2024-07-18
970

我们非常重视原创文章,为尊重知识产权并避免潜在的版权问题,我们在此提供文章的摘要供您初步了解。如果您想要查阅更为详尽的内容,访问作者的公众号页面获取完整文章。

扫码阅读
手机扫码阅读
Lombok详解摘要

Lombok详解和常见问题

简介

Lombok 是一个开源的代码生成库,旨在通过简单的注解形式简化 Java 类中的样板代码。它可以自动生成构造器、getter/setter、equals、hashCode 和 toString 方法,从而显著提高开发效率,尤其适用于需要大量属性的 JavaBean。

相关项目的 Git 地址为:zbbmeta-lombok-demo

安装与配置

要使用 Lombok,需要在 IDE 中安装相应的插件。以 IntelliJ IDEA 为例,插件安装步骤包括:进入设置页面,选择插件选项,搜索并安装 Lombok Plugin。

注意:部分版本的 IntelliJ IDEA 已默认安装 Lombok 插件。

常用注解

Lombok 提供多种注解以简化代码,例如:

  • @Setter/@Getter:生成 setter/getter 方法。
  • @ToString:生成 toString 方法。
  • @EqualsAndHashCode:生成 equals 和 hashCode 方法。
  • @NoArgsConstructor/@AllArgsConstructor/@RequiredArgsConstructor:生成不同类型的构造方法。
  • @Data:综合生成 setter、getter、equals、hashCode 等方法。
  • @Slf4j:生成日志变量。
  • @Builder:支持建造者模式。

入门案例

通过创建 Maven 工程 zbbmeta-lombok-demo,配置 pom.xml 文件,创建数据库表和实体类,并使用 Lombok 注解简化开发过程。

示例中包括创建 User 类、UserController 控制器以及通过 HTTP 请求获取 User 表数据的具体操作。

常见问题

问题:Lombok 对于属性名的处理规则可能与 MyBatis 或其他规范不一致。例如,属性 sName 的 getter/setter 方法被生成为 getSNamesetSName,而非符合 JavaBeans 规范的 getsNamesetsName

原因:MyBatis 解析方法时会将方法名中的 "get" 或 "set" 前缀移除,并根据属性名的首字母规则决定最终的属性名称。

解决方案:

  • 修改属性名,让第二个字母小写,例如将 sName 改为 sname
  • 手动定义符合规范的 getter/setter 方法。

结论

Lombok 极大地简化了 Java 开发中的样板代码,但在使用时需注意与其他框架的兼容性问题。对于特殊场景,可以通过调整代码或手动定义方法来解决兼容性问题。

项目的详细代码和配置可参考 Git 地址:zbbmeta-lombok-demo

springboot葵花宝典