Introducción a Lombok

Para los que no los conozcáis, la isla de Lombok, es una isla situada entre Malasia, Australia e Indonesia. Muy cerquita a la isla de Java, y aunque algo menor en cuanto extensión podemos decir que ambas islas son vecinas. Ambas islas pertenecen a Indonesia.

Para muchos residentes de la isla de Java, tener una isla como Lombok tan cerca les facilita mucho a la hora de elegir sus destinos para sus meses de agosto.

Y como esto no es una clase de geografía, comenzamos.

En el mundo de la programación Lombok tiene una función muy similar, también ayudar en ciertas cosas a nuestro lenguaje de programación backend Java. En este artículo, vamos a hablar sobre una de las herramientas que intenta hacernos la vida más fácil en Java, permítanme presentarles a Lombok.

Lombok, es una herramienta formada por un conjunto de anotaciones que nos permiten reducir código repetitivo (como por ejemplo los Getters y los Setters) más abajo veremos una lista de sus beneficios.

Instalando Lombok

Para poder utilizar Lombok, necesitamos añadir a las dependencias de nuestro fichero pom.xml la siguiente.

Para ello, empezamos creando un proyecto:

Para añadir las dependencias tenemos dos opciones:

  • Marcarlas desde el asistente de creación de proyectos:
  • O añadir las dependencias manualmente en el fichero pom.xml:

Si ahora nos metemos en el proyecto, concretamente en el apartado de dependencias, podemos ver todas las dependencias que maven nos ha descargado y añadido al proyecto para poder trabajar con ellas. Concretamente, cada botecito es un archivo JAR (similar a una .RAR o .ZIP) una dependencia.

Podemos ver que tras añadir la referencia a la dependencia de Lombok, maven nos a añadido la dependencia dentro para poder utilizarla dentro del proyecto.

Y además el paso anterior, necesitamos instalar el pluggin de Lombok para nuestro IDE, en nuestro caso Spring Tool Suite 4 (STS4). Para ello, ejecutamos el CMD como administrador y:

En mi caso, tras realizar la configuación el STS4 no me abría. Por lo visto, no me había realizado la configuración de Lombok correctamente y he tenido que ir a el archivo de configuración SpringToolSuite4.ini:

Y modificar la última línea:

Por:

Haciendo el rebuild

Y abrimos el terminal pero con la ruta del proyecto, de esta manera ya estamos en el directorio para hacer el rebuild del proyecto.

Una vez instalado Lombok correctamente, tenemos que reiniciar nuestro IDE (el STS 4) y hacer un rebuild del proyecto.

Y ya tenemos el proyecto listo para empezar a trabajar.

Beneficios de Lombok

Algunas anotaciones mediante a las que podemos comprobar algunos de sus beneficios (aunque no todos) son:

  • Getters y Setters:
    • @Getter: nos crea todos los Getters de los atributos del objeto. LINK
    • @Getter(lazy=true): nos genera un getter que calculará un valor una vez, una única vez. Concretamente la primera vez que se llama a este getter, y lo almacenará en caché a partir de entonces. Esto es ideal para según qué casos en concretos en los que necesitamos un valor que por ejemplo consume muchos recursos de la CPU y no tendremos que llamarlo constantemente en cada petición. Para usar esta función, creamos un getter con @Getter(lazy=true) y finalmente le añadimos private final al atributo. LINK
    • @Setters: nos crea todos los Setters de los atributos del objeto. LINK
  • Constructores:
    • @NoArgsConstructor: crea un constructor sin argumentos. LINK
      @AllArgsConstructor: crea un constructor con todos los argumentos. LINK
  • Mensajes de Log:
    • @CommonsLog: org.apache.commons.logging.Log LINK
    • @JBossLog: org.jboss.logging.Logger LINK
    • @Log: java.util.logging.Logger LINK
    • @Log4j: org.apache.log4j.Logger LINK
    • @Log4j2: org.apache.logging.log4j.Logger LINK
    • @XSlf4j: org.slf4j.ext.XLogger LINK
  • Encadenamiento de métodos
    • @Builder: permite realizar un encadenamiento para invocar varios métodos dentro de un mismo objeto en una única declaración. LINK
  • Propiedades para métodos u constructores
    • @NonNull: permite asignar un parámetro de un método o constructor para que lombok genere una declaración de verificación nula por usted. o da como resultado la inserción de solo la declaración de verificación nula dentro de su propio método o constructor. LINK
    • @ToString: permite que lombok genere un método toString(). LINK
    • @EqualsAndHashCode: generá los métodos equals() y hashCode(). LINK
  • Limpieza de flujos Streams:
    • @Cleanup: permite asegurarnos que «limpiamos automáticamente» el uso de recurso, con «limpiar» nos referimos a que cerramos esos recursos después de usarlos. Algunos de los más populares son BufferedReader, FileReader, OutputStream e InputStream. LINK
  • Combinados a modo de «ensalada» de anotaciones:
    • @Data: Es equivalente a utilizar el conjunto de anotaciones: @Getter @Setter @RequiredArgsConstructor @ToString @EqualsAndHashCode. LINK
    • @Value: Es una variante de @Data que tiene todos los campos como final y private por lo que protege los atributos (se vuelven solo de lectura) es equivalente al conjunto de anotaciones: @Getter @FieldDefaults(makeFinal=true, level=AccessLevel.PRIVATE) @AllArgsConstructor @ToString @EqualsAndHashCode. LINK

Ejemplo práctico de uso de Lombok

En el artículo de CRUD REST con Spring Boot y JPA, teníamos el POJO Customers. Si analizamos el código «vainilla» vemos que su extensión son 89 líneas.

En cambio, si escribimos los Getters y Setter mediante a la anotación de Lombok, podemos comprobar como el código se reduce a 38 líneas. Nos hemos ahorrado por tanto más de 50 líneas de código repetitivo, tenemos un código que dice más con menos además de ahorrarnos el proceso de crear los Getters y Setters desde el asistente.

Conclusión

A partir de ahora, cuando tengamos Java y repetitivo en una misma frase, deberemos plantearnos si utilizar Lombok tiene sentido. Normalmente la respuesta será que sí. Un saludo javer@s!

87 comentarios

  1. Excellent, what a weblog it is! This weblog provides useful data to us, keep it up.

  2. A fascinating discussion is definitely worth comment.
    I do think that you need to publish more about this topic, it may not be a taboo subject but generally
    people do not speak about such subjects. To the next!
    Many thanks!!

  3. Introducción a Lombok – Java desde 0
    shlmhbkb http://www.g917pm0k2429j60473hzmnwws0y79ehks.org/
    ashlmhbkb
    [url=http://www.g917pm0k2429j60473hzmnwws0y79ehks.org/]ushlmhbkb[/url]

  4. Truly no matter if someone doesn’t know afterward its
    up to other viewers that they will assist, so here it takes place.

  5. Nice post. I was checking constantly this blog and I am
    impressed! Very helpful info specifically the last part :
    ) I care for such info much. I was seeking this certain info for a very long time.
    Thank you and best of luck.

  6. Fantastic site. Plenty of helpful info here. I’m sending it to some buddies ans also sharing in delicious.
    And of course, thank you for your effort!

    Here is my homepage; tracfone special coupon 2022

  7. I’ve been surfing online more than 3 hours today,
    yet I never found any interesting article like
    yours. It is pretty worth enough for me. In my view, if all site
    owners and bloggers made good content as you did, the net will be much more useful than ever before.

    My page … tracfone special coupon 2022

  8. Have you ever thought about including a little bit more than just your articles?

    I mean, what you say is valuable and everything. Nevertheless think about if you added some great photos or videos to give your posts more,
    «pop»! Your content is excellent but with pics and video clips, this
    blog could undeniably be one of the very best in its field.

    Great blog!

  9. Good post. I definitely appreciate this site. Thanks!

  10. Hi! I know this is kinda off topic but I’d figured I’d ask.

    Would you be interested in exchanging links or
    maybe guest authoring a blog article or vice-versa? My website addresses a lot of the same subjects as yours and I believe we could greatly benefit from each other.
    If you’re interested feel free to send me an e-mail.
    I look forward to hearing from you! Fantastic blog by the
    way!

  11. You should take part in a contest for one of the highest quality websites on the net. I’m going to recommend this blog!

  12. Thanks for sharing your thoughts on website. Regards

  13. wonderful issues altogether, you simply won a brand new reader.
    What could you suggest about your publish that you made a few
    days ago? Any certain?

  14. This design is incredible! You definitely know how to keep a reader amused.

    Between your wit and your videos, I was almost moved to start my own blog (well,
    almost…HaHa!) Excellent job. I really enjoyed what you had to say, and more than that, how you presented it.
    Too cool!

  15. I’m impressed, I have to admit. Seldom do I encounter a blog that’s equally educative and amusing, and without a doubt, you have hit the nail on the head. The problem is something which too few men and women are speaking intelligently about. I am very happy that I stumbled across this in my hunt for something relating to this.

  16. of Physiology, PO Box 13F, Monash Univ achat levitra 10 mg orodispersible Гў Camila vZZBRhpaYeBRnLcN 6 27 2022

  17. Nice post. I was checking continuously this blog and I am impressed!
    Extremely helpful information specifically the last part 🙂 I care for
    such info a lot. I was seeking this certain information for a long
    time. Thank you and best of luck.

  18. I like what you guys are up too. This kind of clever work and coverage!
    Keep up the wonderful works guys I’ve incorporated you guys to my own blogroll.

  19. I’m amazed, I must say. Rarely do I come across a blog that’s equally educative and amusing, and let me tell you, you’ve hit the nail on the head. The problem is something which too few men and women are speaking intelligently about. I’m very happy I found this during my hunt for something concerning this.

  20. Very nice article. I certainly appreciate this website.
    Stick with it!

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

La Ley 34/2002 nos obliga a avisarte de que usamos cookies propias y de terceros con objetivos estadísticos y de sesión y para mostrarte la 'publi' que nos da de comer. Tranquilo, este mensaje solo sale una vez. Más información

Java desde 0 comunica a los usuarios, a través de este aviso, que puede utilizar cookies cuando el usuario navega por las diferentes pantallas y páginas del sitio. Durante el uso de nuestra página Web usted acepta y autoriza expresamente el uso de cookies, de acuerdo con nuestra Política de Privacidad. Este sitio web utiliza las siguientes cookies propias: - Cookies de sesión, para garantizar que los usuarios que escriban comentarios en el blog sean humanos y no aplicaciones automatizadas. De esta forma se combate el spam. Este sitio web utiliza las siguientes cookies de terceros: - Google AdManager y AdSense: Utiliza cookies para mejorar la publicidad. Entre otros fines, suelen utilizarse para segmentarla según el contenido que sea relevante para los usuarios o su ubicación, mejorar los informes de rendimiento de las campañas y evitar mostrar anuncios que los usuarios ya hayan visto. Las cookies no contienen información personal identificable. Consulta cómo utiliza Google la información de sitios web o aplicaciones. y cómo bloquear determinados anuncios. - Google Analytics: Almacena cookies para poder elaborar estadísticas sobre el tráfico y volumen de visitas de esta web. Al utilizar este sitio web está consintiendo el tratamiento de información acerca de usted por Google. Por tanto, el ejercicio de cualquier derecho en este sentido deberá hacerlo comunicando directamente con Google. - Redes sociales: Cada red social utiliza sus propias cookies para que usted pueda pinchar en botones del tipo Me gusta o Compartir.

Cerrar