среда, 20 сентября 2017 г.

Подключаем Lombok и выкидываем унылые геттеры / сеттеры в Java

Когда мы описываем модель данных в java-классе, это выглядит примерно так:

============================

private String name;

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

============================

Сначала указали переменную, а потом идут геттеры и сеттеры для нее. Когда переменных много, java-класс раздувает.
Раздутый java-класс

Но если подключить Lombok, то этой проблемы не будет и ровно тот же самый код будет выглядеть так


============================

private String name;

============================

Вместо 9 строк одна. Неплохо ツ

Исправили!

Все, что надо для подключения — включить его в зависимости. В случае использования Maven надо указать проект в pom.xml:

    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>0.11.0</version>
        <scope>provided</scope>
    </dependency>

А потом в самом классе указываем, какой функционал нам нужен. Например, я удаляля лишние геттеры и сеттеры, их и подключала:

import lombok.Getter;
import lombok.Setter;

+ на самом классе ставим аннотации

@Getter
@Setter

Тогда они применятся ко всем полям, в него входящим!


См также:
Проект Lombok, или Объявляем войну бойлерплейту — статья на Хабре про Lombok

Пример


Посмотреть пример можно в проекте Folks, ревизия 7:bdc5f8f0a899 — https://bitbucket.org/testbasecode/folks/commits/bdc5f8f0a899fdf6477d1269775fe154466f29db

Выкинутый код:


Правда, если вы прошлись по ссылке выше, то заметили, что я дважды подключила lombok в зависимостях. Вот что бывает при коммите без ревью кода ツ Уже исправлено!

А еще в том коммите нет аннотаций на самом классе и на самом деле тот код не работал... Это тоже исправлено позднее)))

А изменения делались по задаче https://testbase.atlassian.net/browse/FOLKS-6 (данные для входа см тут)

Вот, как-то так ツ

2 комментария:

  1. Не нужно описывать модели данных в Java. Для этого есть схемы - xsd, jsonschema. Из них потом генерируются модели на любом нужном языке.

    ОтветитьУдалить