Lombook简介以及使用

本文介绍Lombok工具如何通过注解自动生成Java类的getter、setter等方法,极大提高编码效率。展示如何添加依赖及使用常见注解,并提供一个实体类示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

lombok是一个可以通过简单的注解的形式来帮助我们简化消除一些必须有但显得很臃肿的 Java 代码的工具,简单来说,比如我们新建了一个实体类,然后在其中写了几个字段,然后通常情况下我们需要手动去建立getter和setter方法以及构造方法等,lombok的作用就是为了省去我们手动创建这些代码的麻烦,它能够在我们编译源码的时候自动帮我们生成这些方法,这样的代码就显得简洁干净。

1、添加依赖:
   <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>1.16.10</version>
    </dependency>

Lombook在使用中主要靠注解起作用,下面是常用的一些注解及其作用:
1、@NonNull: 可以帮助我们避免空指针

2、@Cleanup: 自动帮我们调用close()方法

3、@Getter / @Setter: 自动生成Getter/Setter方法

4、@NoArgsConstructor: 自动生成无参数构造函数

5、@AllArgsConstructor: 自动生成全参数构造函数

6、@Data: 自动为所有字段添加@ToString, @EqualsAndHashCode, @Getter方法,为非final字段添加@Setter,和@RequiredArgsConstructor!


demo:Account账户实体类

@Entity
@Table(name = "CREDIT_T_ACCOUNT")
@SequenceGenerator(name = SequenceConstant.HIBERNATE_SEQUENCE_GENERATOR, allocationSize = 1, sequenceName = SequenceConstant.DEFAULT_HIBERNATE_SEQUENCE)
@Data
@EqualsAndHashCode(callSuper = true)
@NoArgsConstructor
@EntityListeners(AuditingEntityListener.class)
public class Account extends BaseEntity {

    private static final long serialVersionUID = -8164417517368164010L;

    /**
     * 客户id
     */
    private Long personId;
    /**
     * 账户名称
     */
    private String accountName;
    /**
     * 账户编号
     */
    private String accountNo;

    /**
     * 账户状态
     */
    @Enumerated(EnumType.STRING)
    private AccountStatus accountStatus = AccountStatus.正常;
    /**
     * 账户余额
     */
    @Digits(integer = 999999999, fraction = 2)
    private BigDecimal balance = BigDecimal.ZERO;

    /**
     * 可用金额
     */
    @Digits(integer = 999999999, fraction = 2)
    private BigDecimal availableAmount = BigDecimal.ZERO;

    /**
     * 冻结金额
     */
    @Digits(integer = 999999999, fraction = 2)
    private BigDecimal freezeAmount = BigDecimal.ZERO;
    /**
     * 客户编码
     */
    private String custCode;
    /**
     * 第三方平台        ALTER TABLE credit_t_account RENAME COLUMN thrid_party to third_party
     */
    @Enumerated(EnumType.STRING)
    private AccountThirdParty thirdParty = AccountThirdParty.财富厦门国际存管;
    /**
     * 存管子账户
     */
    private String depositAccountNo;
    public Account(Long personId, String accountName, String accountNo) {
        super();
        this.personId = personId;
        this.accountName = accountName;
        this.accountNo = accountNo;
    }

}


### Lombok 详解 Lombok 是一种 Java 库,它通过注解的方式简化了开发者的编码工作量。其主要目的是减少样板代码的编写,从而让开发者能够更加专注于核心业务逻辑。 #### 安装与配置 为了使用 Lombok,在项目中需要完成以下两步: 1. **添加 Maven 或 Gradle 依赖** 需要在 `pom.xml` 文件中添加如下依赖项[^1]: ```xml <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>x.x.x</version> <scope>provided</scope> </dependency> ``` 2. **安装 IDE 插件(推荐)** 大多数主流 IDE 如 IntelliJ IDEA 和 Eclipse 提供了官方支持的 Lombok 插件。安装该插件可以确保编译器识别由 Lombok 注解生成的内容。 --- #### 常见注解及其功能说明 以下是 Lombok 中常用的注解以及它们的功能描述: 1. **@Getter / @Setter** 自动生成类属性的 getter 方法和 setter 方法。 ```java import lombok.Getter; import lombok.Setter; @Getter @Setter public class User { private String name; private int age; } ``` 2. **@ToString** 自动生成对象的 `toString()` 方法。 ```java import lombok.ToString; @ToString public class Product { private String name; private double price; } ``` 3. **@EqualsAndHashCode** 自动生成 `equals(Object o)` 和 `hashCode()` 方法。 ```java import lombok.EqualsAndHashCode; @EqualsAndHashCode public class Book { private String title; private String author; } ``` 4. **@NoArgsConstructor, @AllArgsConstructor, @RequiredArgsConstructor** 自动为类生成无参构造函数、全参数构造函数或者基于 final 字段的构造函数。 ```java import lombok.NoArgsConstructor; import lombok.AllArgsConstructor; @NoArgsConstructor @AllArgsConstructor public class Car { private String brand; private int year; } ``` 5. **@Data** 组合注解,相当于同时使用了 `@Getter`, `@Setter`, `@ToString`, `@EqualsAndHashCode` 和 `@RequiredArgsConstructor`。 ```java import lombok.Data; @Data public class Employee { private String id; private String department; } ``` 6. **@NonNull** 对字段或方法参数进行非空校验,当传入 null 时会抛出异常,默认情况下抛出 `NullPointerException`[^2]。 可以自定义异常类型,例如修改为 `IllegalArgumentException`,需在项目的根目录下创建 `lombok.config` 文件并设置相关内容: ``` lombok.nonNull.exceptionType = IllegalArgumentException ``` 7. **@Builder** 支持构建者模式,允许通过链式调用初始化复杂对象。 ```java import lombok.Builder; @Builder public class Address { private String street; private String city; } // 调用方式 Address address = Address.builder() .street("Main Street") .city("New York") .build(); ``` 8. **@Slf4j / @Log4j** 自动生成日志记录工具实例。 ```java import lombok.extern.slf4j.Slf4j; @Slf4j public class LoggerExample { public static void main(String[] args) { log.info("This is a test log."); } } ``` 9. **@Cleanup** 确保资源被自动关闭,类似于 try-with-resources 的作用。 ```java import lombok.Cleanup; public class FileReadExample { public static void main(String[] args) throws IOException { @Cleanup InputStream inputStream = new FileInputStream("file.txt"); byte[] buffer = new byte[1024]; while (inputStream.read(buffer) != -1); } } ``` --- #### 使用场景举例 假设有一个简单的实体类 `Person`,我们可以利用 Lombok 来大幅减少冗余代码: ```java import lombok.*; @Data @NoArgsConstructor @AllArgsConstructor public class Person { private String firstName; private String lastName; private int age; } ``` 以上代码实现了以下功能: - 自动生成所有的 getter 和 setter 方法; - 自动生成默认构造函数和全参数构造函数; - 实现了 `toString()`, `equals()`, 和 `hashCode()` 方法。 --- #### 注意事项 尽管 Lombok 极大地提高了开发效率,但在实际应用中有几点需要注意: - **IDE 支持**:必须正确安装 Lombok 插件,否则可能会遇到编译错误。 - **调试困难**:由于 Lombok 动态生成代码,有时可能导致调试过程不够直观。 - **团队协作**:所有成员都需要熟悉 Lombok 并保持一致的使用习惯。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值