15/10/2017
Lombok es una librería Java que reduce la verbosidad del código al automatizar la generación de métodos comunes como constructores, getters, setters, equals, hashCode, toString, entre otros. En este artículo, exploraremos a fondo sus funcionalidades, su configuración en IDEs populares y algunos ejemplos prácticos.

¿Qué es Lombok y para qué sirve?
Lombok se enfoca en eliminar el código repetitivo y aumentar la productividad del desarrollador. Reduce significativamente la cantidad de código que necesitas escribir para gestionar objetos Java, lo que facilita la lectura y el mantenimiento del código. Sus principales beneficios son:
- Reducción de código : Elimina la necesidad de escribir getters, setters, constructores, etc., lo que resulta en un código más limpio y conciso.
- Mejora de la legibilidad : El código se vuelve más fácil de leer y comprender al eliminar la boilerplate.
- Mayor productividad : Los desarrolladores pueden concentrarse en la lógica del negocio en lugar de escribir código repetitivo.
- Menos errores : La generación automática de métodos reduce la posibilidad de errores humanos.
Anotaciones básicas de Lombok
Lombok ofrece una variedad de anotaciones, cada una con una función específica:
@Getter: Genera métodos getter para los atributos de la clase.@Setter: Genera métodos setter para los atributos de la clase.@ToString: Genera un método toString() que muestra los atributos de la clase.@EqualsAndHashCode: Genera métodos equals() y hashCode() que comparan objetos basándose en sus atributos.@NoArgsConstructor: Genera un constructor sin argumentos.@AllArgsConstructor: Genera un constructor con todos los atributos de la clase como parámetros.@Data: Es una combinación de@Getter,@Setter,@EqualsAndHashCode,@ToStringy@RequiredArgsConstructor.@RequiredArgsConstructor: Genera un constructor con los atributos que requieren inicialización.
Características Avanzadas de Lombok
Además de las anotaciones básicas, Lombok ofrece funcionalidades más avanzadas:
@Builder
La anotación @Builderimplementa el patrón Builder, permitiendo crear objetos complejos de forma más legible y flexible. Es especialmente útil con objetos inmutables o con campos opcionales. Ejemplo:

@Builderpublic class Usuario { private String nombre; private String apellido; private String email;}Se puede crear un objeto Usuariousando una sintaxis fluida:
Usuario usuario = Usuario.builder() .nombre("Juan") .apellido("Pérez") .email("[email protected]") .build(); @Value
La anotación @Valuese usa para clases inmutables. Es similar a @Data, pero todos los campos son private finaly no se generan setters. Útil para crear DTOs inmutables.
@Valuepublic class UsuarioDTO { private String nombre; private String apellido; private String email;} @Singular
La anotación @Singularse usa con @Builderpara agregar elementos a colecciones en un patrón builder. Se puede aplicar a colecciones como List, Sety Map.
@Builderpublic class Equipo { private String nombre; @Singular private List<String> miembros;}Se puede construir un objeto Equipoy agregar miembros a la lista uno por uno:
Equipo equipo = Equipo.builder() .nombre("Equipo de Desarrollo") .miembro("Juan") .miembro("Ana") .build();¿Cómo activar Lombok?
Para utilizar Lombok, se necesita configurar tanto el IDE como el proyecto. Los pasos dependen del IDE utilizado:
IntelliJ IDEA
En versiones recientes de IntelliJ IDEA (2020.3 o posteriores), la configuración suele ser automática. En versiones anteriores, se debe:
- Habilitar el procesamiento de anotaciones : En Preferences | Build, Execution, Deployment | Compiler | Annotation Processors , asegurar que está marcado "Enable annotation processing".
- Instalar el plugin Lombok : Buscar "Lombok Plugin" en el Marketplace de plugins de IntelliJ IDEA e instalarlo. Reiniciar el IDE después de la instalación.
Eclipse
- Descargar el JAR de Lombok : Descargar el archivo JAR de la última versión de Lombok desde Maven Central.
- Ejecutar el instalador : Ejecutar el JAR usando
java -jar lombok.jar. El instalador detectará automáticamente las instalaciones de Eclipse. Seleccionar las instalaciones correspondientes y hacer clic en "Install/Update". - Reiniciar Eclipse : Reiniciar Eclipse después de la instalación.
Agregar Lombok al classpath
Independientemente del IDE, se debe agregar la dependencia de Lombok al archivo pom.xml(si se utiliza Maven):
<dependencies> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>128</version> <!-- Usar la versión más reciente --> <scope>provided</scope> <dependency></dependencies>@Builder en Lombok
La anotación @Buildergenera un patrón de construcción (builder pattern) para tu clase. Esto facilita la creación de objetos complejos, especialmente aquellos con muchos parámetros opcionales. Ejemplo:
@Builderpublic class Persona { private String nombre; private String ciudad; private String profesion;}Puedes crear una instancia de Persona usando:
Persona persona = Persona.builder() .nombre("Juan") .ciudad("Madrid") .profesion("Ingeniero") .build(); @Builderofrece opciones de configuración, como el nombre de la clase Builder, el nombre del método build, etc.
¿Qué hace @RequiredArgsConstructor?
La anotación @RequiredArgsConstructorgenera un constructor que inicializa todos los atributos que son final y no tienen valor asignado. Esto es útil para garantizar que los atributos esenciales se inicialicen al crear un objeto.
@RequiredArgsConstructorpublic class Producto { private final String nombre; private final double precio;}En este caso, @RequiredArgsConstructorcreará un constructor que recibe nombrey preciocomo parámetros.
Tabla Comparativa de Anotaciones Lombok
| Anotacion | Descripción |
|---|---|
@Getter | Genera métodos getter. |
@Setter | Genera métodos setter. |
@ToString | Genera un método toString(). |
@EqualsAndHashCode | Genera métodos equals() y hashCode(). |
@NoArgsConstructor | Genera un constructor sin argumentos. |
@AllArgsConstructor | Genera un constructor con todos los argumentos. |
@Data | Combina varias anotaciones ( @Getter , @Setter , @EqualsAndHashCode , @ToString , @RequiredArgsConstructor ). |
@RequiredArgsConstructor | Genera un constructor para los atributos finales sin inicializar. |
@Builder | Implementa el patrón Builder. |
@Value | Genera una clase inmutable. |
@Singular | Para añadir elementos a colecciones con @Builder . |
Conclusión : Lombok es una herramienta poderosa que simplifica la escritura de código Java, mejorando la productividad y la legibilidad. Su configuración es sencilla en los IDEs más populares, y sus múltiples anotaciones ofrecen una gran flexibilidad para adaptarse a diferentes necesidades.
Si quieres conocer otros artículos parecidos a Lombok : simplifica tu código java puedes visitar la categoría Libros y Librerías.
