#spring-boot #intellij-idea #lombok #intellij-plugin #intellij-lombok-plugin
Вопрос:
Я разрабатываю проект spring-boot, используя Gradle в качестве инструмента сборки в среде IDE ItelliJ.
У меня есть зависимость 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();
}
Я знаю, что мне нужно установить плагин lombok в моей интегрированной среде разработки IntelliJ, чтобы избежать ошибки компилятора в методе получения. Поэтому я так и сделал. Но когда я запускаю свое приложение, я получаю ошибку:
error: cannot find symbol
symbol: method getName()
location: variable productPayload of type CreateProductRestModel
Я также попытался изменить зависимость с compileOnly
на implementation
:
implementation 'org.projectlombok:lombok:1.18.20'
Это не помогает. Это почему? Что я упускаю?
(Я тоже включил annotationProcessor
свой IntelliJ)
Комментарии:
1. вы только установили плагин или также активировали обработку аннотаций? также в gradle есть
annotationProcessor
иtestAnnotationProcessor
зависимости, которые следует установить.2. Я забыл упомянуть, что я включил аннотационный процессор в IntelliJ. Не могли бы вы предоставить фрагмент кода для
annotationProcessor
in gradle?3. Вот, пожалуйста projectlombok.org/setup/gradle
4. @thinkgruen не могли бы вы, пожалуйста, дать ответ, я приму его. Спасибо!
Ответ №1:
Для того, чтобы Gradle мог использовать процессоры аннотаций, они ввели отдельную конфигурацию, которая будет генерировать весь новый код перед «обычной» компиляцией.
Для Ломбока это выглядело бы примерно так:
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'
}