SpringBoot中Lombok注解失效的解决方案

 更新时间:2026年03月09日 09:34:19   作者:Sun 3285  
文章介绍了在使用SpringBoot 4.0.3版本时遇到Lombok依赖不生效的问题,通过排查发现是由于IDEA的Maven插件配置问题导致的,通过注释掉pom.xml文件中的所有插件配置,问题解决,需要的朋友可以参考下

背景

所用 Spring Boot 版本为 4.0.3,在创建项目时,勾选了 Lombok 依赖。

在代码中给 User 实体类添加了 @Data 注解,user 对象调用自带的 getName() 方法。当项目启动时,报如下错误:

java: 找不到符号
  符号: 方法 getName()
  位置: 类型为 com.sun3285.pojo.User 的变量 user

检查 pom.xml 文件,发现确实已经引入了 Lombok 依赖:

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

开始怀疑 Lombok 依赖是否未生效,主要是两个方向

  1. 本地问题,Lombok 依赖可能由于哪里配置不对,导致未生效;
  2. 兼容性问题,因为 Spring Boot 版本为 4.0.3,版本较高,怀疑 Lombok 依赖版本与 Spring Boot 版本不兼容,导致 Lombok 未生效。

以下是排查问题的整个过程:

排查方向一

将 Lombok 依赖配置可能出问题的地方都检查一遍:

实体类 User 是否加了 @Data 注解? 是!

IDEA 是否安装了 Lombok 插件,并且插件是否启用? 是!

是否开启注解处理? 是!

在 IDEA 中打开实体类 User,通过 Ctrl + 鼠标左键 点击 @Data 注解,看是否能跳转到 Lombok 的源码? 是!

确保以上没问题后,清除 IDEA 缓存,删除项目目录下的 target 文件夹,重启 IDEA,重新启动项目,发现问题仍未解决。

于是开始排查方向二

排查方向二

首先,手动在实体类 User 中,临时手动重写 getName()、toString() 等方法,启动项目,一切顺利,无问题。

于是,怀疑 Lombok 依赖版本与 Spring Boot 版本不兼容,导致 Lombok 未生效。

接着,将 Spring Boot 版本降低为 3.3.5,其他保持不变,经验证,问题仍未解决。说明该问题与 Spring Boot 版本无关。

下一步,搜索网上的资料,尝试了一些方法,如:

  1. 修改 pom.xml 文件中的 Lombok 依赖:去掉 <optional> 标签,并手动指定 Lombok 依赖的版本;
  2. 修改 pom.xml 文件中的插件 plugin 配置:去掉 <build> 部分的第一个插件 maven-compiler-plugin

经验证,问题仍未解决。

最后,项目中就真的不能用 Lombok 依赖,只能手动为实体类写 getter 和 setter 方法了吗?

No!

接下来,介绍偶然发现的 Lombok 注解失效的解决方案。

解决方案

pom.xml 文件中,所有的插件 plugin 都注释掉,即以下部分

清除 IDEA 缓存,删除项目目录下的 target 文件夹,重启 IDEA,重新启动项目,一切顺利,问题解决

神奇的地方来了,下一步,将 pom.xml 文件中,上述所有的插件 plugin 都重新取消注释,即恢复原状。

清除 IDEA 缓存,删除项目目录下的 target 文件夹,重启 IDEA,重新启动项目,一切顺利,问题未复现

进一步验证

在项目编译后,在 target/classes/xxx/pojo/ 目录下找到实体类 User.class,打开,可以看到有自动生成的各种方法

到此这篇关于SpringBoot中Lombok注解失效的解决方案的文章就介绍到这了,更多相关SpringBoot Lombok注解失效内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • MyBatis使用标签动态操作数据库详解

    MyBatis使用标签动态操作数据库详解

    这篇文章主要介绍了MyBatis中使用标签动态操作数据库的方法,动态SQL是指在运行PL/SQL块时动态输入SQL语句,是Mybatis的强大特性之⼀,能够完成不同条件下不同的sql拼接,需要的朋友可以参考下
    2024-05-05
  • springboot操作ldap全过程

    springboot操作ldap全过程

    这篇文章主要介绍了springboot操作ldap全过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-05-05
  • SpringMVC对自定义controller入参预处理方式

    SpringMVC对自定义controller入参预处理方式

    这篇文章主要介绍了SpringMVC对自定义controller入参预处理方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-09-09
  • Spring cloud Gateway简介及相关配置方法

    Spring cloud Gateway简介及相关配置方法

    这篇文章主要介绍了Spring cloud Gateway简介及相关配置方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-04-04
  • 解决idea使用过程中让你觉得不爽的一些问题(小结)

    解决idea使用过程中让你觉得不爽的一些问题(小结)

    这篇文章主要介绍了解决idea使用过程中让你觉得不爽的一些问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-08-08
  • SpringBoot如何优雅的输出异常信息

    SpringBoot如何优雅的输出异常信息

    在Java中,异常(Exception)是Java程序在运行过程中出现的一种特殊情况,会中断正常的程序流程,异常可以是运行时错误,也可以是编程错误,本文将给大家详细的介绍一下SpringBoot如何优雅的输出异常信息,需要的朋友可以参考下
    2023-09-09
  • java实现简单的webservice方式

    java实现简单的webservice方式

    这篇文章主要为大家详细介绍了java实现简单的webservice方式,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-05-05
  • Spring中基于Java的配置@Configuration和@Bean用法详解

    Spring中基于Java的配置@Configuration和@Bean用法详解

    这篇文章主要介绍了Spring中基于Java的配置@Configuration和@Bean用法详解,Spring中为了减少xml中配置,可以声明一个配置类(例如SpringConfig)来对bean进行配置。,需要的朋友可以参考下
    2019-06-06
  • Java虚拟机JVM性能优化(三):垃圾收集详解

    Java虚拟机JVM性能优化(三):垃圾收集详解

    这篇文章主要介绍了Java虚拟机JVM性能优化(三):垃圾收集详解,本文讲解了众多的JVM垃圾收集器知识点,需要的朋友可以参考下
    2014-09-09
  • Java SpringBoot操作Redis

    Java SpringBoot操作Redis

    这篇文章主要介绍了SpringBoot如何操作Redis,文章中有详细的代码示例,有一定的参考价值,感兴趣的同学可以参考阅读
    2023-04-04

最新评论