Lombok 可以理解为一种通过简单注解自动生成方法的工具。
Lombok 使用前需要配置 Lombok 依赖,在 IDEA 里需要下载 Lombok 插件,还需在设置中注解处理器里打开注解处理。

# 代码解释

注解作用
@Data自动生成  gettersetterequals()hashCode()toString()  方法
@NoArgsConstructor生成无参构造器( public User() {} ),JPA 实体类必须要有无参构造器
@AllArgsConstructor生成含所有字段的构造器(可选)

# 扩展用法

其他常用 Lombok 注解功能
@Builder生成链式构造器模式(适合创建复杂对象)
@ToString(exclude = "id")生成  toString()  时可排除指定字段(如敏感信息)
@Slf4j自动注入  private static final Logger log = LoggerFactory.getLogger(...);

# 出现问题:明明引入了 Lombok 但是没用

参考:Lombok 注解不生效_lombok 注解不起作用 - CSDN 博客
解决方案:在 IDEA 里创建项目的时候,依赖项先不要选择 Lombok,而是在项目创建完成后手动加入 Lombok 依赖,如下:

<dependency>  
    <groupId>org.projectlombok</groupId>  
    <artifactId>lombok</artifactId>  
    <optional>true</optional>  
</dependency>

如果要检查 Lombok 是否生效,可以检查生成的字节码,查看是否生成 getter、setter 等函数。
下面是实例:

javap -p target/classes/com/example/demo_mysql/Entity/User.class

# 反思

这个问题主要反映在前端发送请求但是 500 错误码,后端报错字段为空。我遇到了很多次这个问题,一开始笃定是 Lombok 失效了,但是检查字节码竟然发现他成功生成了函数。这个时候才开始检查其他方面,发现是 Controller 就写错了,少写了 @RequestBody  和 @RequestParam  。
如果前端传递的是 JSON 格式的请求体,但后端没有使用  @RequestBody  注解,Spring 将无法解析参数。

问题示例

@PostMapping("/users")
public User createUser(User user) { // ❌ 错误:缺少 @RequestBody
    return userService.save(user);
}

修正方案

@PostMapping("/users")
public User createUser(@RequestBody User user) { // ✅ 正确
    return userService.save(user);
}

关于这个问题,具体也可以看:Controller 内的参数注解使用场景

更新于 阅读次数

请我喝[茶]~( ̄▽ ̄)~*

北沐清 微信支付

微信支付

北沐清 支付宝

支付宝