Spring Boot – 100 Q&A 1/10
Hola, con este artículo quiero iniciar una serie de 10 artículos relacionados con Spring Boot, el objetivo de estos artículos es compartir una guía de preguntas y respuestas comunes que suelen hacerse en entrevistas de trabajo, conversaciones entre programadores y que; de manera general serán muy útiles para aprender detalles interesantes sobre este importante marco de trabajo. Quiero después de esta serie hacer una igual sobre Spring Cloud y sus sub-proyectos ¿Qué te parece?
¿Qué es Spring Boot?
Spring Boot es un framework para el desarrollo de aplicaciones, un proyecto basado en Spring, construido encima de este, se basa en los principios de Convención sobre Configuración, y fue desarrollado con la idea de permitir el desarrollo y puesta en operación rápida de aplicaciones, resolviendo problemas presentes en Spring como la inclusión excesiva y detallada de dependencias, solución a problema de dependencias transitivas, y con un fácil despliegue a partir de disponer un contenedor de servlet autocontenido (Tomcat por defecto). Spring Boot configura determinadas clases en dependencia de las librerías disponibles en el classpath.
¿Cúal es la versión actual de Spring Boot?
A fecha de hoy 11/19, Spring Boot es la 2.1.7 (en la rama estable para producción, release), en Snapshot se encuentran la 2.1.8 y 2.2.0 en la rama Pre la 2.2.0 M5, para producción es importante siempre usar release estable.
¿Qué es Spring CLI?
Spring CLI es una utilidad de línea de comandos que provee el proyecto Spring para facilitar el desarrollo rápido de aplicaciones, permitiendo a partir de opciones pasadas por parámetros generar código de manera rápida. Spring CLI puede ser instalado en sistemas Linux usando SDK-MAN
¿Qué es Spring Initializr?
Para facilitar la creación de aplicaciones Spring/Boot desde cero se creó la plataforma en línea Spring Initializr. Esta utilidad similar a la anterior que de forma sencilla podemos configurar nuestro proyecto, estableciendo su nombre, versión, descripción y eligiendo las dependencias que va a emplear; con todo esto la plataforma nos devuelve el “cascarón” de nuestro proyecto con un proyecto maven/gradle preconfigurado para usar. Los principales IDEs de desarrollo como Intellij y STS tienen integración directa con este servicio para generar nuestro proyecto base, aunque también lo podemos hacer desde el navegador web y descargarlo.
¿Qué IDEs puedo usar para desarrollar aplicaciones con Spring Boot?
En principio cualquier editor de textos puede funcionar, sin embargo en los últimos tiempos hay dos herramientas principales que son las preferidas por la mayoría de los desarrolladores: IntelliJ, el potente IDE Java desarrollado por JetBrains y Spring Tool Suite, basado en Eclipse y desarrollado a la medida para la creación de aplicaciones basadas en Spring, la versión 4 de STS ofrece características interesantes como la introspección en tiempo real de los endpoint desarrollados, soporte multiproyectos (ideal para proyectos múlti-módulos) y otras muchas ventajas. STS provee integración adicional con Visual Studio Code.
¿Qué es un Starter en Spring Boot?
El concepto starter en Spring Boot hace referencia a un tipo de dependencia que contiene un grupo de sub-dependencias ya pre-escritas y listas para funcionar. Imagina si en lugar de darte los ingredientes para hacer un café, te lo dieran todo preparado; el café listo para tomar sería el starter-coffe de Spring Boot. En términos prácticos los starter ayudan a resolver el problema de las colisiones en dependencias transitiva. Imaginemos que estamos fuera de Boot y que vamos a crear un proyecto, le añadimos Hibernate 5.1 que depende de una versión de Logging determinada, maven se encargará de resolver las dependencias, pero si al mismo proyecto añadimos Spring 5 que depende de una versión superior de la misma biblioteca de Logging que Hibernate, entonces comenzaremos a tener problemas. El concepto de starter centraliza el versionado de las bibliotecas y evita este tipo de problemas.
¿Qué es Spring Starter Parent?
Es un starter especial que facilita la gestión de las dependencias en un proyecto Spring Boot, proporciona configuraciones predeterminadas para nuestra aplicación y un árbol de dependencias completo para construir rápidamente nuestro proyecto Spring Boot.
¿Qué proporciona Spring Starter Web?
Es uno de los starter más populares empleados en aplicaciones Spring Boot, provee soporte para Spring MVC y un servidor tomcat embebido para desarrollar aplicaciones web y APIs REST.
¿Cómo puedo monitorear de forma rápida en producción una aplicación Spring Boot?
Además de spring-boot-starter-web que vimos en el punto anterior, existe spring-boot-starter-actuator, es un starter desarrollado para poder monitorear enteramente nuestra aplicación Spring Boot, solo debemos añadirlo como dependencia y nos provee un grupo de endpoints REST para conocer información de la máquina virtual, hilos usados por la aplicación, estado de salud, información de los beans, métricas y mucha más información de monitoreo. Los endpoints y su disponibilidad se configuran desde el fichero application.properties/yml, en las últimas versiones algunos endpoints por seguridad no están habilitados.
¿Cúales son las ventajas diferenciales de Spring Boot?
La respuesta a esta pregunta la realizaré por puntos para que queda más clara:
- Fácil configuración: Cuando creamos un proyecto Spring Boot casi no debemos incluir configuraciones adicionales, esta concebido para que los desarrolladores se centren en programar sin tener que preocuparse por las configuraciones excesivas.
- Despliegue instantáneo: Permite que nuestra aplicación se pueda desplegar directamente sin necesidad de generar un WAR tradicional para ponerlo en un contenedor de servelts, incluye por defecto a Tomcat pero existen starters para Undertow, Jetty y otros. Existen facilidades para integración con Docker y poder proveer un fácil pipeline para procesos de entrega continua
- Mejor gestión de dependencias: Boot a partir de los starters provee un eficiente y simplificado mecanismo de gestión de dependencias evitando problemas de colisiones por versionado.
¿ Te ha gustado ? En próximos días seguirá la serie.
Spring Boot le ha hecho la vida más fácil a los desarrolladores. Para los que comienzan a conocerlo y a los que no, le da una perspectiva consisa, en la que ciertos aspectos que pueden parecer triviales no lo son. En mi modesta opinión acertado.
Gracias Rolando, es como comentas. Te esperamos de vuelta por acá.