Spring Boot

Spring es un framework muy utilizado en los últimos años y como parte del crecimiento de su ecosistema varios proyectos fueron desarrollados tales como Spring Data, Spring Security, etc. Pero, la integración de estos proyectos requieren de configuración, la cual es considerada una tarea repetitiva en los diversos proyectos y el cual ha traído problemas a algunos.

Spring Boot al rescate!

Spring Boot es el proyecto más reciente de spring que nos ayuda a iniciar nuestro proyecto utilizando los diferentes proyectos de spring de una manera ágil y evitar la configuración, la cual hemos lidiado por mucho tiempo. Toda esta magia se debe a la configuración por defecto que trae dentro y que puede ser configurada vía propiedades. Spring Boot nos permite poner enfoque en agregar valor y mejorar la experiencia del desarrollador.

Iniciando con Spring Boot

Existen diferentes formas de iniciar:

Spring Initializr

Spring provee un servicio que nos permite generar nuestro proyecto. Brinda una interfaz simple en la cual podemos elegir la versión de java a utilizar, la versión de spring-boot, la build tool (maven o gradle), el lenguaje a utilizar (java, kotlin o groovy), el paquete (jar o war). Puedes acceder a Spring Initializr para iniciar.

Spring Initializr

Spring Tool Suite

STS es el IDE por defecto de spring por lo tanto no debería sorprendernos que tenga soporte de primera mano. No solo nos brinda integración con Spring Initializr desde el IDE, también ofrece un panel para elegir los proyectos a utilizar y además un panel de control que nos permite manejar nuestras aplicaciones con spring-boot.

Otras IDEs como Intellij IDEA y Netbeans también brindan soporte para spring boot.

Spring Boot CLI

Si somos de los que usamos la línea de comando para todo. Spring Boot CLI al rescate! Podemos instalarlo usando sdkman, homebrew ó macports. También, podemos hacer la descargar manual de la última versión de spring-boot-cli y crear una variable de entorno.

Para comprobar que ha sido instalado correctamente solamente tenemos que ejecutar el siguiente comando en nuestra línea de comandos:

spring --version

En la consola se visualizará lo siguiente Spring CLI v1.4.0.RELEASE.

Características

Spring Boot provee lo siguiente:

  • Convención sobre configuración

    En lugar de estar escribiendo la configuración necesaria y validar si es correcta, Spring Boot provee las configuraciones necesarias bajo diferentes escenarios. De esta manera evitamos la tarea repetitiva de estar agregando las configuraciones.

  • Dependency management

    A veces, tenemos que lidiar con las versiones de las dependencias que usamos y las dependencias transitivas que existen entre ellas. Lo cual nos lleva a hacer un análisis de las dependencias de nuestro proyecto y limpiar la duplicidad de dependencias con diferentes versiones y hacer funcionar nuestros proyectos con las dependencias indicadas. Spring Boot provee un análisis de las dependencias que los proyectos alrededor de spring utilizan de manera que nosotros solo tenemos que indicar que dependencia necesitamos sin necesidad de indicar la versión. Al mismo tiempo, ofrece una manera practica de actualizar la versión en caso se quiera hacer un upgrade o downgrade de la misma.

  • Auto-configuration

    Como se mencionó en un inicio, spring y sus diferentes proyectos necesitan ser configurados para que funcionen de manera adecuada y podamos continuar agregando valor a nuestra aplicación. Pero la realidad es que muchas veces invertimos mucho tiempo en esas configuraciones. Spring Boot es lo suficientemente inteligente para poder activar las configuraciones necesarias si cumple con ciertas condiciones como si las clases estan en el classpath o los beans han sido creados o los properties correspondientes han sido habilitados.

  • Starters dependencies

    Puedes recordar todas las dependencias que necesitas si quieres utilizar spring-data-jpa o spring-web? necesitas echarle un vistazo a tu anterior proyecto y hacer un ctrl + c y ctrl + v? El trabajo se hace mas fácil si tan solo pudiera decirle a mi proyecto necesito usar jpa y web. Por esta razón, spring-boot provee este tipo de dependencias que traen consigo las dependencias necesarias para empezar nuestro proyecto y ahorrarnos el trabajo de ir a buscar nuestra plantilla con dependencias a otro lado.

  • Actuator

    Los requerimientos no funcionales cómo visualizar métricas, el estado de nuestra aplicación y los servicios con los que se conecta, los beans o properties de la aplicación no son una tarea fácil de implementar pero son necesarios para poder monitorear y saber la infraestructura interna del proyecto a traves de estos endpoints. Bueno, con spring esto es sumamente sencillo, lo único que tenemos que hacer es agregar el proyecto actuator y tendremos acceso a una serie de endpoints como /beans, /metrics, /health, /env y otro más.

  • Embedded Server

    Spring Boot da soporte para Tomcat, Jetty y Undertow embebidos.


Eddú Meléndez

Java Software Engineer, Open Source Contributor