1. 问题现象:Lombok注解失效的诡异现象
最近在SpringBoot项目中遇到一个奇怪的问题:明明在UserInfo类上添加了@Data注解,但编译后查看target目录下的反编译文件,却发现根本没有生成预期的getter和setter方法。更诡异的是,整个过程中IDE没有抛出任何错误或警告,就像Lombok完全不存在一样。
这种情况特别容易发生在以下环境组合中:
- IntelliJ IDEA 2022.3及以上版本
- Spring Boot 3.x项目
- Lombok 1.18.24+版本
关键现象验证:在IDEA中按住Ctrl点击本该由@Data生成的getter方法,如果无法跳转到源码而是报"找不到声明",基本可以确认Lombok注解处理失效。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 深度排查:为什么Lombok突然不工作了?
2.1 Spring Boot的"善意"升级陷阱
Spring Boot从某个版本开始(具体是2.7.x之后),在通过start.spring.io创建项目时,如果勾选了Lombok依赖,会自动引入一个名为spring-boot-configuration-processor的注解处理器。这个本意是好的——为了支持@ConfigurationProperties的元数据生成。但问题在于,它会和Lombok的注解处理器产生冲突。
冲突原理:
- Java编译器的注解处理机制是链式执行的
- 当多个注解处理器存在时,它们的执行顺序不确定
spring-boot-configuration-processor可能会"吃掉"编译上下文,导致Lombok无法获取完整的AST树
解决方案很简单,在pom.xml中找到这个依赖:
xml复制<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
直接删除或者添加<scope>provided</scope>即可。
2.2 版本不匹配的暗坑
另一个常见问题是
