Комментарии 9
Значит jackson сначала создавал класс с помощью конструктора без параметров, а потом вызывал getter/setter.
Ну да, так все делают. Практически всем библиотекам сериализации необходим пустой конструктор (обычно приватный) — только Java Serialization позволено инициировать "пустые" объекты без конструктора, хотя есть способы обхода этого. Для установки данных Jackson может использовть как геттеры-сеттеры, так и прямой доступ к полям любой видимости.
компилятору необходимо передать флаг javac -parameters
Плохой способ. Ни одна из существующих IDE не подцепит это, поэтому придется устанавливать дополнительно в настройках проекта. И вообще код качественно не должет зависеть от флагов компиляции. Если Вы используете Lombok, то есть лучший способ — прописать в lombok.config:
lombok.allArgsConstructor.addConstructorProperties = true
Это сгенерит на конструкторе @java.beans.ConstructorProperties
, который Jackson умеет понимать.
Проблема, как я понял, в том, что вам не нравится многословность аннотаций у boot 1.5, но я так и не понял из текста решена ли она в boot 2, или она решается подключением Kotlin к boot 1.5, или и тем и тем одновременно. И что, в итоге, сделали вы?
Getter — это аннотация Jackson или Lombok?
Небольшая поправка, можно добавить final, чтобы сделать класс еще больше иммутабельным. Точнее это защитит его от других программистов, если они захотят менять api класса.
@Getter
public class Fruit {
private final String name;
private final String description;
public Fruit( String name, String description) {
this.name = name;
this.description = description;
}
}
Умеем ли мы готовить Java, Kotlin RestController?