Как стать автором
Обновить

Комментарии 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, или и тем и тем одновременно. И что, в итоге, сделали вы?
Спасибо за комментарий, постараюсь перекомпоновать. Я хотел показать как происходила эволюция в проектах, которые я видел. Изначально у меня была проблема что quarkus + kotlin data class не работают, spring boot 1.5 + kotlin data class не работают, Хотя spring boot 2 + kotlin data class работает. В итоге добавление флага компилятора спасает, т.е. залезаем в pom файл spring-boot-starter-parent и копируем флаги, например в quarkus проект и это спасает.

Getter — это аннотация Jackson или Lombok?

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;
    }
}
Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.