好的,下面给你整理一份 Lombok 的完整介绍、使用方法和总结,内容包括概念、常用注解、IDE 配置、示例以及注意事项。


一、Lombok 简介

Lombok 是一个 Java 库,通过注解的方式自动生成一些常见的样板代码(boilerplate code),如:

  • Getter / Setter 方法
  • 构造函数
  • toString()equals()hashCode()
  • 日志对象
  • Builder 模式

特点:

  1. 减少样板代码,提高开发效率。
  2. 注解方式清晰直观,代码简洁。
  3. 完全兼容现有 Java 项目,无需改变业务逻辑。
  4. Lombok 通过 编译器插件或 IDE 插件 在编译时生成字节码。

官网https://projectlombok.org/


二、Lombok 使用方法

1. 引入 Lombok 依赖

  • Maven
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.18.30</version>
    <scope>provided</scope>
</dependency>

  • Gradle
dependencies {
    compileOnly 'org.projectlombok:lombok:1.18.30'
    annotationProcessor 'org.projectlombok:lombok:1.18.30'
}

注意:providedcompileOnly 表示 Lombok 只在编译期使用,不会打包到最终 jar。


2. 常用注解

2.1 Getter / Setter

import lombok.Getter;
import lombok.Setter;

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

// 编译后自动生成
// public String getName() {...}
// public void setName(String name) {...}
// public int getAge() {...}
// public void setAge(int age) {...}

2.2 @Data

@Data 是一个组合注解,相当于同时加上:

  • @Getter@Setter
  • @ToString
  • @EqualsAndHashCode
  • @RequiredArgsConstructor
import lombok.Data;

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

// 自动生成 Getter / Setter / toString / equals / hashCode / 构造函数

2.3 构造函数

  • @NoArgsConstructor:无参构造函数
  • @AllArgsConstructor:全参构造函数
  • @RequiredArgsConstructor:为 final@NonNull 字段生成构造函数
import lombok.AllArgsConstructor;
import lombok.NoArgsConstructor;
import lombok.RequiredArgsConstructor;
import lombok.NonNull;

@NoArgsConstructor
@AllArgsConstructor
@RequiredArgsConstructor
public class User {
    @NonNull
    private String name;
    private int age;
}

2.4 @Builder

  • 实现建造者模式,链式构造对象
import lombok.Builder;

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

// 使用方式
User user = User.builder()
                .name("Alice")
                .age(25)
                .build();

2.5 @ToString / @EqualsAndHashCode

  • @ToString 自动生成 toString() 方法
  • @EqualsAndHashCode 自动生成 equals()hashCode() 方法
import lombok.ToString;
import lombok.EqualsAndHashCode;

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

2.6 @Slf4j / 日志注解

  • 自动生成日志对象,避免重复写 LoggerFactory.getLogger()
import lombok.extern.slf4j.Slf4j;

@Slf4j
public class UserService {
    public void process() {
        log.info("Processing user...");
    }
}


3. IDE 配置

  • IntelliJ IDEA
    1. 安装 Lombok 插件:File -> Settings -> Plugins -> Marketplace -> Lombok
    2. 启用注解处理器:File -> Settings -> Build, Execution, Deployment -> Compiler -> Annotation Processors -> Enable annotation processing
  • Eclipse
    1. 安装 Lombok jar 文件:双击下载的 lombok.jar,选择 Eclipse 安装目录。
    2. Eclipse 会自动集成 Lombok。

没有安装插件或开启注解处理器,IDE 可能无法识别自动生成的方法,但程序仍可正常编译运行。


4. 完整示例

import lombok.Data;
import lombok.Builder;
import lombok.extern.slf4j.Slf4j;

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

    public static void main(String[] args) {
        User user = User.builder()
                        .name("Alice")
                        .age(25)
                        .build();

        log.info(user.toString());
    }
}

  • 自动生成 Getter/Setter/toString
  • 支持 Builder 模式
  • 支持日志输出

三、Lombok 总结

优点

  1. 减少样板代码:无需手动编写 Getter/Setter、构造函数等。
  2. 提高开发效率:代码简洁、易读。
  3. 兼容性好:与 Spring Boot、MyBatis 等主流框架兼容。
  4. 功能丰富:支持 Builder、日志注入、equals/hashCode、@Singular 集合构建等。

缺点 / 注意事项

  1. IDE 支持依赖插件:未配置注解处理器可能看不到生成的方法。
  2. 调试不直观:方法生成在编译时完成,IDE 代码跳转可能受限。
  3. 版本兼容问题:Lombok 和 Java 版本不兼容时可能出现编译错误。
  4. 过度使用:在简单类中,@Data 或 @Builder 使用过多可能导致不必要的功能生成,增加维护难度。

总结建议

  • 实体类/DTO/VO,使用 @Data@Getter/@Setter
  • 复杂对象构建,使用 @Builder
  • 日志类,使用 @Slf4j
  • 避免对公共 API 类滥用 @Data,控制生成方法范围,提升安全性。