博客
关于我
LomBok常用注解及详细介绍
阅读量:791 次
发布时间:2023-02-06

本文共 2378 字,大约阅读时间需要 7 分钟。

Lombok 常用注解详解

Lombok 是一个极大提升 Java 开发效率的库,通过代码增强功能可以帮助开发者减少重复性代码,从而专注于业务逻辑的实现。以下是 Lombok 的几个常用注解的详细介绍:


1. @Getter/@Setter

作用:自动生成 getter 和 setter 方法

特点

  • @Getter:自动生成属性的 getter 方法,用来获取属性值。
  • @Setter:自动生成属性的 setter 方法,用来设置属性值。
  • 只需在属性上使用注解即可,例如:
    private String name;  @Getter  @Setter  public String getName() { return name; }

    编译后会自动生成:

    public String getName() { return this.name; }  public void setName(String name) { this.name = name; }

2. @ToString

作用:自动生成对象的 toString 方法

特点

  • toString 方法会输出类中所有非静态、非 transient 的字段名称及对应值。
  • 适用于需要快速获取对象信息的场景。
  • 例如:
    @ToString  class User {      private String name;      private Integer age;  }

    编译后 toString 方法会输出:

    User@User(name=张三, age=30)

3. @EqualsAndHashCode

作用:自动生成 equals 和 hashCode 方法

特点

  • equals 方法判断两个对象是否相等,包括所有非静态、非 transient 的字段。
  • hashCode 方法根据所有字段的 hashcode 计算出统一值。
  • 可通过 exclude 或 of 属性指定要包含或排除的字段。
  • 示例:
    @EqualsAndHashCode(exclude = {"name"})  class User {      private String email;      private Integer id;  }

    编译后 equals 方法会忽略 name 字段。


4. @NoArgsConstructor, @AllArgsConstructor, @RequiredArgsConstructor

作用:自动生成构造器

  • @NoArgsConstructor:生成没有参数的构造器。
  • @AllArgsConstructor:生成包含所有字段的构造器。
  • @RequiredArgsConstructor:生成仅包含标记为 final 或 @Required 的字段的构造器。

注意事项

  • 如果一个类没有手动编写构造器,Java 会默认生成一个无参数的构造器。
  • 在使用 @AllArgsConstructor 时,通常需要同时添加 @NoArgsConstructor,以满足某些框架的需求(如 Spring Data JPA)。

5. @Data

作用:整合多个注解,适用于可变的类

特点

  • @Data 会自动带上 @Getter, @Setter, @ToString, @EqualsAndHashCode, @RequiredArgsConstructor。
  • 适用于 DTO、POJO 或 JPA Entity。
  • 例如:
    @Data  class User {      private String name;      private Integer age;  }

    编译后会自动生成以上所有方法和逻辑。


6. @Value

作用:类似 @Data,但字段为 final 或不变

特点

  • @Value 会自动带上 @Getter, @ToString, @EqualsAndHashCode, @RequiredArgsConstructor。
  • 适用于不希望字段被修改的类(如 immutable 类)。
  • 示例:
    @Value  class Constants {      public static final String LOG_PATH = "/log/path";  }

7. @Builder

作用:自动生成流式赋值方法

特点

  • @Builder 会自动生成一个 Builder 类,用于链式赋值。
  • 开发者可以通过 .withXXX() 方法逐步设置字段值。
  • 示例:
    @Builder  class User {      private String name;      private Integer age;  }

    编译后 Builder 类会提供如下方法:

    User.builder()      .withName("张三")      .withAge(30)      .build();

8. @Slf4j

作用:自动生成日志常量

特点

  • @Slf4j 会生成一个 static Logger 实例,方便快速打印日志。
  • 支持多种日志框架(如 SLF4J、Log4j 等),但在 Spring Boot 项目中默认使用 SLF4J + logback。
  • 示例:
    @Slf4j  class LogUtil {      @Slf4j      public static void info(String message) {          log.info(message);      }  }

通过合理使用 Lombok 的注解,可以显著减少重复代码,提高开发效率。每个注解都有特定的用途,建议根据项目需求选择最适合的注解组合。

转载地址:http://rjufk.baihongyu.com/

你可能感兴趣的文章
Linux(3):Linux命令-文件管理
查看>>
Linux(7):VIM的使用
查看>>
Linux(8):安装JDK
查看>>
Linux(centos7)上安装最新版R3.4.1
查看>>
Linux(CentOS)安装 Nginx
查看>>
linux(乌班图)修改apt下载源
查看>>
Linux,启动java程序的通用脚本sh
查看>>
Linux:/dev/tty、/dev/tty0 和 /dev/console 之间的区别
查看>>
Linux:CentOS安装Docker Compose
查看>>
Linux:CentOS安装Git
查看>>
Linux:fpm打包工具
查看>>
Linux:mysql中文乱码解决方案
查看>>
Linux:Prometheus安装
查看>>
Linux:yum安装提示“没有可用软件包”
查看>>
Linux:修改yum源
查看>>
Linux:升级OpenSSL到1.1以上版本
查看>>
Linux:升级python3
查看>>
Linux:安装gcc
查看>>
Linux:安装Grafana
查看>>
Linux:安装Nginx
查看>>