При написании Java Beans-ов постоянно приходится совершать одно и тоже действие — добавлять getter-ы и setter-ы для полей. Кто-то делает это вручную. Кто-то создаёт их автоматически с помощью IDE. В этом посте речь пойдёт об их генерации на основе аннотаций.
Представляю вашему вниманию Lombok Project. В его основе лежит простая идея: при описании полей, просто добавьте аннотации @Getter и/или @Setter и при компиляции будут автоматически сгенерированы соответствующие методы.
В проекте, использующем Maven необходимо добавить библиотеку в зависимости:
Область видимости выставлена в provided, чтобы библиотека не попадала в JAR/WAR файл приложения, т.к. при использовании @Getter/@Setter аннотаций она необходима только на стадии компиляции.
Ниже простой пример:
В результате Lombok сгенерит для вас примерно следующий код:
Удобно? Как по мне, то да :)
Выше я написал, что Lombok сгенерит для вас примерно такой код, т.е. похожий, но всё-таки не такой. А что же будет на самом деле? Давайте заглянем под капот и сами посмотрим:
Здесь мы используем Delombok для того, чтобы посмотреть на результирующий код. Также мы можем с помощью Delombok-а конвертировать код, написанный с применением Lombok-аннотаций в обычный Java код.
По умолчанию, Lombok создаёт открытые методы (т.е. с модификатором public). Вы также можете попросить его создать методы с любой другой областью видимости, указав необходимый AccessLevel:
Справедливости ради также приведу несколько отрицательных сторон использования этой библиотеки:
Замечу, что это отнюдь не все фишки, которые предоставляет Lombok, я лишь рассказал о самой, на мой взгляд, популярной.
Представляю вашему вниманию Lombok Project. В его основе лежит простая идея: при описании полей, просто добавьте аннотации @Getter и/или @Setter и при компиляции будут автоматически сгенерированы соответствующие методы.
В проекте, использующем Maven необходимо добавить библиотеку в зависимости:
Область видимости выставлена в provided, чтобы библиотека не попадала в JAR/WAR файл приложения, т.к. при использовании @Getter/@Setter аннотаций она необходима только на стадии компиляции.
Ниже простой пример:
В результате Lombok сгенерит для вас примерно следующий код:
Удобно? Как по мне, то да :)
Выше я написал, что Lombok сгенерит для вас примерно такой код, т.е. похожий, но всё-таки не такой. А что же будет на самом деле? Давайте заглянем под капот и сами посмотрим:
Здесь мы используем Delombok для того, чтобы посмотреть на результирующий код. Также мы можем с помощью Delombok-а конвертировать код, написанный с применением Lombok-аннотаций в обычный Java код.
По умолчанию, Lombok создаёт открытые методы (т.е. с модификатором public). Вы также можете попросить его создать методы с любой другой областью видимости, указав необходимый AccessLevel:
Справедливости ради также приведу несколько отрицательных сторон использования этой библиотеки:
- можно запутаться при отладке, т.к. компилятор работает со сгенерированным кодом, а вы с исходным
- не все IDE могут поддерживать автодополнение методов, созданных Lombok-ом. В случае использования Eclipse, с этим проблем быть не должно, достаточно только установить JAR-файл Lombok-а
- некоторые верификаторы кода, которые анализируют исходный код, например, CheckStyle, могут рапортовать вам об ошибках, которых на самом деле нет, т.к. они не берут в рассчет аннотации Lombok-а (Здесь может помочь delomok и специальный Maven плагин, но сходу его настроить у меня не вышло.)
Замечу, что это отнюдь не все фишки, которые предоставляет Lombok, я лишь рассказал о самой, на мой взгляд, популярной.
Комментариев нет:
Отправить комментарий