Рубрики
Без рубрики

Упрощение наших POJOs с помощью Lombok

Это краткая презентация проекта Lombok, целью которого является упрощение нашего Java-кода путем генерации шаблонного кода (например, средства доступа). Помеченный java.

Все знают, как писать POJO (Простые старые Java-объекты). Более того, наши современные IDE справляются с этой повторяющейся и не очень полезной работой, генерируя шаблонный код, такой как средства доступа, конструкторы и часто переопределяемые методы, такие как toString, equals или hashCode. Кстати, какой разработчик может сказать, что у него никогда не было долгих дебатов со своей командой о том, как написать удовлетворяющий метод equals или hashCode, который никогда не получал уведомления от своего инструмента статического анализа кода о несоответствии между полями, используемыми в реализации этих методов? Цель проекта Lombok – облегчить жизнь разработчикам, выполнив эту грязную работу и очистив POJOs от всего этого шаблонного кода, который не имеет большой ценности и, что более важно, теряет важную информацию, бизнес-код, в середине технических слоев. Как это работает в двух словах: Lombok интегрируется с вашей любимой IDE и автоматически сгенерирует этот код, не показывая его вам. Вы увидите только определение полей, хотя все вспомогательные и “служебные” методы будут доступны. Это волшебство выполняется с помощью одной или нескольких аннотаций. Мы также поговорим о некоторых других повторяющихся и/или подробных задачах, с которыми Ломбок может справиться за нас.

Давайте начнем!

Установка Lombok проста. Вы можете либо загрузить его самоисполняемый jar на официальном сайте и запустить его, либо установить его плагин в свою IDEA (я лично использую IntelliJ, поэтому я использовал это решение), затем добавить lombok.jar к пути к классу вашего Java-проекта. Если вы используете Maven для обработки вашей сборки и зависимостей, добавьте следующую зависимость в свой pom.xml: <зависимость> |/<идентификатор группы>org.projectlombok<|Идентификатор группы>/| ломбок <версия>1.16.8 <область действия>предоставлено действия> действия>

Как только мы будем готовы к работе, давайте создадим простое POJO:

Как и ожидалось, компилятор не очень доволен нашим кодом… Давайте просто добавим аннотацию Lombok @Data к нашему определению класса:

Проблема решена! Но что действительно интересно, так это то, что наш POJO теперь может предложить гораздо больше:

Мы можем быстро проверить результаты:

Теперь у нас есть довольно удобочитаемый метод toString без необходимости писать несколько строк кода!

Особые потребности

Это был более простой вариант использования Lombok, но я уверен, что некоторые из вас думают, что он немного ограничен и что он не будет работать в ваших особых случаях. Не бойся! Lombok позволяет вам настраивать все, что он генерирует. Вместо того, чтобы использовать @Data для генерации всего кода, Lombok предоставляет аннотации для каждой из своих функций. Например, если мы хотим предоставить средства доступа только для некоторых полей или с определенной видимостью, мы можем добиться этого, используя аннотации @Getter и @Setter и их параметры для желаемых атрибутов.

Что касается функций, которые мы видели ранее, мы можем аннотировать класс для генерации методов toString, equals и hashCode, и для каждого метода мы можем указать атрибуты для включения или исключения для генерации кода:

Мы также можем сгенерировать частный конструктор и связанную с ним фабрику:

Еще одна интересная аннотация, предоставленная Ломбоком, – @NonNull. Это позволяет автоматически проверять, что параметр установщика или конструктора не равен null, и в противном случае выдавать исключение:

Важно, чтобы все было просто!

Ломбок также содержит больше аннотаций, но я нахожу их менее интересными. Например, @CleanUp позволяет автоматически вызывать метод close переменной, определенной внутри блока try/catch. Это может быть полезно для тех, кто все еще использует Java 6 и не может воспользоваться преимуществами использования ресурсов, представленных в JDK 7. Аннотация @Synchronized позволяет определять блокировки. Лично я предпочитаю определять блокировки с помощью стандартного ключевого слова synchronized, которое знает каждый разработчик Java. Последняя аннотация, о которой я хочу поговорить, самая сложная: @SneakyThrows позволяет создавать непроверенное исключение внутри тела метода, не указывая его внутри сигнатуры метода. Он может маскировать потенциальные ошибки для разработчика и поэтому может быть очень подвержен ошибкам, я не рекомендую его использовать.

Заключительные мысли

В заключение, я думаю, что Lombok – интересный инструмент для упрощения написания POJO. Это не убийственный инструмент, но наличие меньшего количества шаблонного кода для поддержки – это хорошо для меня, это помогает сделать бизнес-информацию более заметной. Технические аннотации Ломбока, по моему мнению, менее интересны, и они даже могут быть довольно опасными с моей точки зрения. Несмотря на эти несколько недостатков, я готов попробовать Ломбок в своих личных проектах.

Вы можете найти фрагменты кода этой статьи в моем репозитории my Github

Оригинал: “https://dev.to/schreiber_chris/simplifying-our-pojos-with-lombok”