Lombok 基本使用

不用 Lombok(真实痛点)

public class User {
    private Long id;
    private String username;

    public Long getId() { return id; }
    public void setId(Long id) { this.id = id; }

    public String getUsername() { return username; }
    public void setUsername(String username) { this.username = username; }
}

👉 问题:

  • 70% 代码是重复的
  • 可读性差
  • AI 也会生成一堆冗余代码

用 Lombok(核心用法)

import lombok.Data;

@Data
public class User {
    private Long id;
    private String username;
}

👉 编译后自动生成:

get/set/toString/equals/hashCode


常用注解

1>. @Data

@Data
class User {}

等价于:

@Getter
@Setter
@ToString
@EqualsAndHashCode
@RequiredArgsConstructor


2>. @Getter / @Setter

@Getter
@Setter
class User {}


3>. @Builder(强烈推荐)

构建对象非常优雅

@Builder
class User {
    private Long id;
    private String username;
}

使用:

User user = User.builder()
    .id(1L)
    .username("tom")
    .build();


4>. @NoArgsConstructor / @AllArgsConstructor

@NoArgsConstructor
@AllArgsConstructor
class User {}

👉 生成:

new User()
new User(id, username)


5> @RequiredArgsConstructor

👉 配合依赖注入

@RequiredArgsConstructor
@Service
public class UserService {
    private final UserMapper userMapper;
}

👉 自动生成构造函数:

public UserService(UserMapper userMapper) {
    this.userMapper = userMapper;
}


最佳使用地场景

✔ 1. Entity

@Data
public class User {
    private Long id;
    private String username;
}


✔ 2. DTO (Data Transfer Object(数据传输对象),用于接收前端传来的数据)

@Data
public class UserCreateDTO {
    private String username;
}


✔ 3. VO ( View Object(视图对象)返回给前端的数据对象 )

@Data
public class UserVO {
    private Long id;
    private String username;
}


举报

© 著作权归作者所有


0