
如何在 Spring Boot 中整合 Lombok 简化 getter/setter 样板代码【免费下载链接】toBeBetterJavaer一份通俗易懂、风趣幽默的Java学习指南内容涵盖Java基础、Java并发编程、Java虚拟机、Java企业级开发、Java面试等核心知识点。学Java就认准二哥的Java进阶之路项目地址: https://gitcode.com/GitHub_Trending/to/toBeBetterJavaer如果你在用 Spring Boot 编写业务代码实体类JavaBean的属性一多getter / setter的样板代码就会变得又臭又长。这篇文章基于《二哥的Java进阶之路》中的 Spring Boot 整合 Lombok 一篇文档给出在 Spring Boot 项目中整合 Lombok 的完整路径添加依赖、用注解替代手写 getter/setter并验证这些方法确实被生成。适用前提是项目使用 Maven 构建、用 Intellij IDEA 开发。为什么需要 Lombok先看一个没有 Lombok 时的 JavaBean三个属性就要写 6 个方法class Cmower { private int age; private String name; private BigDecimal money; public int getAge() { return age; } public void setAge(int age) { this.age age; } public String getName() { return name; } public void setName(String name) { this.name name; } public BigDecimal getMoney() { return money; } public void setMoney(BigDecimal money) { this.money money; } }Lombok 通过在编译期自动生成常用代码来消除这些样板。它会在编译时自动为 JavaBean 的属性生成getter / setter还可以生成构造方法、equals、hashCode、toString方法。注意生成发生在编译阶段——源码中没有这些方法但编译出的 class 文件里有。用 Lombok 改写后同样的类只剩字段声明Getter Setter class CmowerLombok { private int age; private String name; private BigDecimal money; }准备条件整合 Lombok 之前确认两件事项目使用 Maven 构建并且已经有一个可以编译启动的 Spring Boot 项目。项目可以通过 Spring Initializr 或 IDEA 的新建 Spring Boot 项目向导生成搭建第一个 Spring Boot 项目 一篇有完整步骤。Intellij IDEA 版本。IDEA 从 2020.3 版本起内置了 Lombok 插件更早的版本需要手动安装 Lombok 插件否则 JavaBean 的getter / setter无法自动编译、也不能被调用。添加 Lombok 依赖Spring Boot 从 2.1.x 版本之后starter 中已经内置了 Lombok 依赖不需要再显式添加。也就是说如果你的项目基于 Spring Boot 2.1.x 及以上版本跳过本节直接进入使用即可。如果使用 Maven 构建的普通 Java 项目或需要显式声明在pom.xml中添加依赖dependency groupIdorg.projectlombok/groupId artifactIdlombok/artifactId version1.18.6/version scopeprovided/scope /dependency这里的scopeprovided很关键它说明 Lombok 只在编译阶段生效。Lombok 会在编译期把带注解的源码文件正确编译为完整的 class 文件运行时不需要这个 jar。IDEA 插件推荐 一文中给出的写法省略了 version由依赖管理提供两者含义一致。用注解替代 getter/setter依赖就位后在类上或字段上使用注解即可。文档给出的两种用法类级别一个注解覆盖所有字段Getter Setter class CmowerLombok { private int age; private String name; private BigDecimal money; }字段级别按字段精细控制——这是日常写 VO、DTO 时最常用的方式class CmowerLombok { Getter Setter private int age; Getter private String name; Setter private BigDecimal money; }如果希望一次性生成getter / setter、equals、hashCode和toString用Data注解即可它是这些能力的总和Data class CmowerLombok { private int age; private String name; private BigDecimal money; }除了这三个与 getter/setter 直接相关的注解文档中还介绍了ToString生成toString方便打日志、Builder建造者模式链式赋值、Val类似var的局部变量声明、Slf4j自动生成log字段用于日志logback 一篇 中有实际用例等可按需查阅原文。验证注解是否生效Lombok 是编译期生成方法所以验证要看两个地方IDE 的类结构和编译产物。在 IDEA 中查看类结构。如果一个类使用了 Lombok 注解通过类结构查看类中方法的视图可以看到对应生成方法比如toString和builder。能在这里看到方法说明插件和依赖都工作正常。反编译 target 目录下的 class 文件。打开target目录下编译出的.class文件可以看到反编译后的字节码方法确实存在。文档示例Getter / Setter作用在CmowerLombok上反编译结果如下class CmowerLombok { private int age; private String name; private BigDecimal money; public int getAge() { return this.age; } public void setAge(int age) { this.age age; } public String getName() { return this.name; } public void setMoney(BigDecimal money) { this.money money; } }注意name字段只有Getter所以反编译结果里只有getName()而没有setName()——可以借此检查自己的注解是否按预期作用到了对应字段。排查与限制IDEA 中 getter/setter 无法编译或调用。先确认 IDEA 是否带有 Lombok 插件。2020.3 及以后版本内置更旧的版本需要自行安装否则编译不过。团队成员使用 Eclipse。Eclipse 用户也必须安装 Lombok 插件否则打开使用 Lombok 注解的项目会无法通过编译。团队内部要就是否使用 Lombok达成一致有人用有人不用会破坏整体代码风格。与 MyBatis 配合时的一个已知坑。Data和Builder一起使用时无参构造方法会丢失需要主动声明无参构造并加Tolerate注解告诉 Lombok 允许该构造方法存在否则会导致 ORM 映射出错。MyBatis 整合一篇 中的实体类写法Data Builder public class User { private Integer id; private Integer age; private String name; private String password; Tolerate User() {} }团队能力匹配。文档提醒如果团队成员有人不会使用 Lombok需要考虑是否引入——不会用的人无法阅读 Lombok 生成的代码会影响团队开发效率。参考Spring Boot 整合 Lombok依赖坐标、注解用法、编译期处理流程IDEA 神级插件推荐Lombok 插件说明与依赖引入Spring Boot 整合 LogbackSlf4j的实际使用Spring Boot 整合 MyBatisData Builder Tolerate的实体类写法【免费下载链接】toBeBetterJavaer一份通俗易懂、风趣幽默的Java学习指南内容涵盖Java基础、Java并发编程、Java虚拟机、Java企业级开发、Java面试等核心知识点。学Java就认准二哥的Java进阶之路项目地址: https://gitcode.com/GitHub_Trending/to/toBeBetterJavaer创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考