在我的 spring-boot 项目中使用 lombok 依赖项,但 getter 方法在运行时产生错误(虽然构建成功)

Using lombok dependency in my spring-boot project but the getter method yields error at runtime (built successfully though)

我正在使用 Gradle 作为 ItelliJ IDE.

上的构建工具开发一个 spring-boot 项目

我在 gradle.build 中声明了 lombok 的依赖项:

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-web:2.5.3'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
    compileOnly 'org.projectlombok:lombok:1.18.20'
}

我有一个模型class:

import lombok.Data;
import java.math.BigDecimal;

@Data
public class ProductModel {
    private String name;
    private BigDecimal price;
    private Integer quantity;
}

如您所见,我已经用 @Data 进行了注释。

我的控制器有处理 POST 请求的方法,它的负载被映射到 ProductModel:

@PostMapping
public String createProduct(@RequestBody ProductModel productPayload) {
       // Runtime error: error: cannot find symbol, 'getName' in 'ProductModel'
       productPayload.getName();
}

我知道我需要在我的 IntelliJ IDE 上安装 lombok 插件以避免 getter 方法上的编译器错误。所以我就那样做了。但是当我 运行 我的应用程序出现错误时:

error: cannot find symbol
symbol:   method getName()
location: variable productPayload of type CreateProductRestModel

我还尝试将依赖项从 compileOnly 更改为 implementation:

implementation 'org.projectlombok:lombok:1.18.20'

没用。这是为什么?我错过了什么?

(我也在我的 IntelliJ 上启用了 annotationProcessor

为了 Gradle 使用注释处理器,他们引入了一个单独的配置,该配置将在“正常”编译之前生成所有新代码。

对于 Lombok,它看起来像这样:

dependencies {
    compileOnly 'org.projectlombok:lombok:1.18.20'
    annotationProcessor 'org.projectlombok:lombok:1.18.20'
    
    testCompileOnly 'org.projectlombok:lombok:1.18.20'
    testAnnotationProcessor 'org.projectlombok:lombok:1.18.20'
}