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:

val

Finally! Hassle-free final local variables.

@NonNull

or: How I learned to stop worrying and love the NullPointerException.

@Cleanup

Automatic resource management: Call your close() methods safely with no hassle.

@Getter/@Setter

Never write public int getFoo() {return foo;} again.

@ToString

No need to start a debugger to see your fields: Just let lombok generate a toString for you!

@EqualsAndHashCode

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.

@Data

All together now: A shortcut for @ToString, @EqualsAndHashCode, @Getter on all fields, and @Setter on all non-final fields, and @RequiredArgsConstructor!

@Value

Immutable classes made very easy.

@Builder

… and Bob’s your uncle: No-hassle fancy-pants APIs for object creation!

@SneakyThrows

To boldly throw checked exceptions where no one has thrown them before!

@Synchronized

synchronized done right: Don’t expose your locks.

@Getter(lazy=true)

Laziness is a virtue!

@Log

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í:

https://projectlombok.org/features/all