在我的 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'
}
我正在使用 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'
}