# Lombok

# 介绍

Lombok 帮助开发者自动生成 getter,setter,toString 等样板代码

# 配置依赖

    <!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
    <dependency>
      <groupId>org.projectlombok</groupId>
      <artifactId>lombok</artifactId>
      <version>1.18.12</version>
      <!-- 只用于编译,不进行打包 -->
      <scope>provided</scope>
    </dependency>

# IDEA 插件

安装插件让 IDEA 可以识别 Lombok 注解,防止检查报错。

# 常用注解

IDEA 插件下面列出了几乎全部的注解

# @Getter @Setter

创建 getter 和 setter 方法。

@Getter @Setter
public class Basic3 {
  private int id;
  private String name;

  public static void main(String[] args) {
    Basic3 basic3 = new Basic3();
    basic3.setId(1);
    basic3.setName("Diana");
    System.out.println(basic3.getId());
    System.out.println(basic3.getName());
  }
}

# @ToString

创建 toString 方法,同时可以指定包括和不包括哪些字段。

@ToString
public class Basic5 {
  private int id;
  private String name;
  @ToString.Exclude private int age;

  public static void main(String[] args) {
    Basic5 basic5 = new Basic5();
    System.out.println(basic5);
  }
}

# @RequiredArgsConstructor

创建带参构造,参数包括所有未初始化的 final 成员和@NonNull 修饰的成员。

@RequiredArgsConstructor
public class Basic6 {
  private final int id;
  @NonNull private String name;
  private int age;

  public static void main(String[] args) {
    Basic6 basic6 = new Basic6(1, "Diana");
  }

}

# @Data

复合注解:包括@Getter、@Setter、@ToString、@RequiredArgsConstructor 和@EqualsAndHashCode

@Data
public class Basic2 {
  private final int id;
  private final String name;
  @NonNull private int age;
  private String role;

  public static void main(String[] args) {
    Basic2 basic2 = new Basic2(1, "Diana", 18);
    basic2.setRole("admin");
    System.out.println(basic2.getId());
    System.out.println(basic2.getName());
    System.out.println(basic2);
  }
}

如果已经存在构造器则@Data 中的@RequiredArgsConstructor 不生效(只能单独打上注解)

@Data
@NoArgsConstructor(force = true)
@RequiredArgsConstructor
public class Basic {
  private final int id;
  private final String name;
}

# @Slf4j

自动创建一个 Slf4J Logger 对象,名称为当前类名。

// Create
private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(LogExample.class);
@Slf4j
public class Basic4 {
  public static void main(String[] args) {
    log.info("hello {}", "info");
  }
}
上次更新: 2/13/2025, 3:29:47 AM