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;
}