Java:Lombok 完整讲解

📅 2026/7/21 11:25:35
Java:Lombok 完整讲解
一、Lombok 是什么Lombok 是一款Java 代码简化工具库核心作用通过注解自动生成重复模板代码不用手动写 get/set、构造器、toString、equals、hashCode 等。Java 原生写实体类POJO/Entity会大量重复样板代码 getter、setter、无参构造、全参构造、toString、equals、hashCode代码冗余、修改字段要同步改一堆方法。 Lombok 在编译阶段自动帮你生成这些字节码源码里看不到运行效果和手写完全一致。二、使用前提两步配置1. Maven 引入依赖dependency groupIdorg.projectlombok/groupId artifactIdlombok/artifactId version1.18.30/version scopeprovided/scope /dependencyprovided只编译时生效打包不会打入 jar。2. IDEA 必须装 Lombok 插件IDEA 不装插件会报红找不到 get/set 方法File → Settings → Plugins搜索 Lombok安装重启 IDEA开启注解处理Settings → Build → Compiler → Annotation Processors → Enable annotation processing三、最常用核心注解开发高频1. Data实体类万能注解等价同时拥有Getter Setter ToString EqualsAndHashCode NoArgsConstructor示例import lombok.Data; Data public class User { private Long id; private String username; private Integer age; }编译后自动生成 getId () /setId ()、toString ()、equals ()、hashCode ()、无参构造2. Getter / Setter单独给类 / 字段生成 get、setGetter Setter public class User { private Long id; // 此字段不生成set Getter private String name; }3. NoArgsConstructor / AllArgsConstructorNoArgsConstructor无参构造Mybatis、反射框架必备AllArgsConstructor全字段参数构造器Data NoArgsConstructor AllArgsConstructor public class User { private Long id; private String name; }4. Builder建造者模式创建对象超方便链式创建对象日常 DTO、VO 高频使用Data Builder NoArgsConstructor AllArgsConstructor // Builder搭配无参全参避免反射报错 public class User { private Long id; private String username; } // 使用 User user User.builder() .id(1L) .username(张三) .build();5. Slf4j / Log4j2日志简化自动生成log日志对象不用手动声明import lombok.extern.slf4j.Slf4j; Slf4j Service public class UserService { public void test() { log.info(用户操作日志); } }6. NonNullpublic void setName(NonNull String name) { this.name name; }参数非空校验为空直接抛空指针异常7. RequiredArgsConstructor把final修饰的字段、NonNull字段生成构造器 Spring 依赖注入推荐Service RequiredArgsConstructor public class UserService { private final UserMapper userMapper; // 自动注入 }替代 Autowired代码更简洁。四、优缺点优点大幅减少实体类冗余代码清爽整洁修改字段不用同步修改 get/set/toString减少漏改 bug内置日志、建造者、构造器注解开发效率高编译期生成代码无运行时性能损耗缺点 坑重点避坑toString/equals 循环引用问题两个实体互相引用Data 生成 toString 会栈溢出解决方案ToString.Exclude、EqualsAndHashCode.Exclude排除关联字段。升级 JDK、IDEA 后容易插件失效注解报错继承场景下EqualsAndHashCode默认不包含父类字段需手动开启callSuper trueData EqualsAndHashCode(callSuper true) public class UserDTO extends BaseEntity {}源码看不到实际方法新手调试不直观部分代码检测工具、代码审计会识别不到生成方法五、适用场景数据库实体 Entity、DTO、VO、Request/Response 请求对象Service、Controller 日志打印快速构建对象、构造注入 Bean六、简单总结Lombok 就是编译期代码生成工具靠注解干掉 Java 重复样板代码是 SpringBoot 项目标配工具几乎所有后端开发都会使用。