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

壤土

我正在使用 Gradle 作为 ItelliJ IDE 上的构建工具开发一个 spring-boot 项目。

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

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

我有一个模型类:

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

我还尝试将依赖项从 更改compileOnlyimplementation

implementation 'org.projectlombok:lombok:1.18.20'

它没有帮助。这是为什么?我错过了什么?

(我也启用annotationProcessor了我的 IntelliJ)

思考格鲁恩

为了让 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'
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章