Lombok es una librería Java que permite eliminar el código repetitivo al que nos obliga (aún hoy) Java, permitiendo por ejemplo generar los gets, los sets, los Logs, el toString,… con una anotación (lástima que Spring Roo no evolucionase lo suficiente J).
Lombok se integra en nuestro IDE ayudándonos a desarrollar más rápido.
Veamos cómo instalarlo y algunos ejemplos de uso.
Lombok en Maven:
Si uso Maven me bastará con definir la dependencia:
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.18</version>
<scope>provided</scope>
</dependency>
Para instalarlo en Eclipse basta con descargar la última versión del JAR (https://projectlombok.org/downloads/lombok.jar ) y ejecutar
>java –jar lombok.jar
(con Eclipse cerrado). El JAR intentaré encontrar los diferentes Eclipses instalados, aunque podéis especificar la localización del Eclipse a actualizar:
Tras esto pincharé
La instalación lo que hace es copiar el JAR lombok.jar a la carpeta de mi Eclipse:
Si lanzo Eclipse (como es mi caso) desde un bat tendré que añadir al script de lanzamiento:
Una vez instalado veamos algunos posibles usos de Lombok:
Lombok incluye estas anotaciones:
Finally! Hassle-free final local variables.
or: How I learned to stop worrying and love the NullPointerException.
Automatic resource management: Call your close() methods safely with no hassle.
Never write public int getFoo() {return foo;} again.
No need to start a debugger to see your fields: Just let lombok generate a toString for you!
Equality made easy: Generates hashCode and equals implementations from the fields of your object..
@NoArgsConstructor, @RequiredArgsConstructor and @AllArgsConstructor
Constructors made to order: Generates constructors that take no arguments, one argument per final / non-nullfield, or one argument for every field.
All together now: A shortcut for @ToString, @EqualsAndHashCode, @Getter on all fields, and @Setter on all non-final fields, and @RequiredArgsConstructor!
Immutable classes made very easy.
… and Bob’s your uncle: No-hassle fancy-pants APIs for object creation!
To boldly throw checked exceptions where no one has thrown them before!
synchronized done right: Don’t expose your locks.
Laziness is a virtue!
Captain’s Log, stardate 24435.7: "What was that line again?"
La anotación imprescindible es la de @Getter @Setter que se usa así:
También es útil el @ToString:
Esto nos lleva a la anotación @Data es un wrapper que equivale a incluir las anotaciones: @ToString, @EqualsAndHashCode, @Getter on all fields, and @Setter on all non-final fields, and @RequiredArgsConstructor
Este código:
Equivale en Java a:
…….
Otra anotación que nos ahorrará código y dolores de cabeza (ya veréis como sí): @NonNull
Cuando la uso en este método:
Equivale a:
Interesante el soporte para Logs vía un conjunto de anotaciones:
Este código:
Equivale a:
La última anotación que quería comentar es una de las más interesantes y que más tiempo ahorran, @Builder que crea Builders para nuestra aplicación. Por ejemplo:
Me permite hacer esto:
Podéis consultar el resto de características de Lombok aquí:
Reblogueó esto en Un poco de Java y +.