En mi publicación anterior “Introducción a Spring Boot”, hemos discutido los conceptos básicos de Spring Boot. Ahora discutiremos sobre “Cuáles son los principales componentes de Spring Boot” y “Cómo funciona Spring Boot bajo el capó”.
Componentes clave del marco de Spring Boot
El marco de Spring Boot tiene principalmente cuatro componentes principales.
- Starters de Spring Boot
- AutoConfigurador de Spring Boot
- CLI de Spring Boot
- Actuador de Spring Boot
NOTA: Además de estos cuatro componentes principales, hay dos componentes más de Spring Boot:
- Initilizr de Spring
- IDEs de Spring Boot
Para comenzar rápidamente nuevos proyectos de Spring Boot, podemos usar la interfaz web “Spring Initializr”. URL de Spring Initializr: https://start.spring.io. Tenemos muchos IDEs de Spring Boot como Eclipse IDE, IntelliJ IDEA, Spring STS Suite, etc. Discutiremos estos dos componentes en próximas publicaciones. Ahora discutiremos estos cuatro componentes de Spring Boot uno por uno en detalle.
Iniciador de Spring Boot
Los Iniciadores de Spring Boot son una de las principales características o componentes clave del marco Spring Boot. La responsabilidad principal de un Iniciador de Spring Boot es combinar un grupo de dependencias comunes o relacionadas en dependencias únicas. Exploraremos esta declaración en detalle con un ejemplo. Por ejemplo, si deseamos desarrollar una aplicación web Spring con el servidor web Tomcat, entonces necesitamos agregar las siguientes dependencias mínimas en el archivo pom.xml de Maven o el archivo build.gradle de Gradle
- Archivo Jar principal de Spring (spring-core-xx.jar)
- Archivo Jar de Spring Web (spring-web-xx.jar)
- Archivo Jar de Spring Web MVC (spring-webmvc-xx.jar)
- Archivo Jar de Servlet (servlet-xx.jar)
Si queremos agregar funcionalidades de base de datos, entonces necesitamos agregar archivos jar relacionados con la base de datos, como el archivo Jar de Spring JDBC, los archivos jar de Spring ORM, el archivo Jar de transacciones de Spring, etc.
- Archivo Jar de Spring JDBC (spring-jdbc-xx.jar)
- Archivo Jar de Spring ORM (spring-orm-xx.jar)
- Archivo Jar de Transacciones de Spring (spring-transaction-xx.jar)
Necesitamos definir muchas dependencias en nuestros archivos de construcción. Es una tarea muy tediosa y engorrosa para un desarrollador. Y también aumenta el tamaño de nuestros archivos de construcción. ¿Cuál es la solución para evitar tantas definiciones de dependencias en nuestros archivos de construcción? La solución es el componente Spring Boot Starter. El componente Spring Boot Starter combina todos los archivos JAR relacionados en un solo archivo JAR para que solo tengamos que agregar la dependencia del archivo JAR a nuestros archivos de construcción. En lugar de agregar los 4 archivos JAR anteriores a nuestro archivo de construcción, debemos agregar solo un archivo JAR: el archivo JAR “spring-boot-starter-web”. Cuando agregamos la dependencia del archivo JAR “spring-boot-starter-web” a nuestro archivo de construcción, el Framework Spring Boot descargará automáticamente todos los archivos JAR requeridos y los agregará al classpath de nuestro proyecto. De la misma manera, el archivo JAR “spring-boot-starter-logging” carga todas sus dependencias, como “jcl-over-slf4j, jul-to-slf4j, log4j-over-slf4j, logback-classic”, en el classpath de nuestro proyecto.
Principales ventajas del Spring Boot Starter
- Spring Boot Starter reduce la definición de muchas dependencias simplificando las dependencias de construcción del proyecto.
- Spring Boot Starter simplifica las dependencias de construcción del proyecto.
Eso es todo sobre el componente Spring Boot Starter. Discutiremos algunos detalles más con algunos ejemplos de Spring Boot en publicaciones futuras.
AutoConfigurador de Spring Boot
Otro componente clave importante del Marco de Spring Boot es Spring Boot AutoConfigurator. La mayoría de las opiniones críticas de la Plataforma Spring IO (Framework Spring) es que “Desarrollar una aplicación basada en Spring requiere mucha configuración (ya sea configuración XML o configuración de anotaciones). Entonces, ¿cómo resolver este problema? La solución a este problema es Spring Boot AutoConfigurator. La responsabilidad principal de Spring Boot AutoConfigurator es reducir la configuración de Spring. Si desarrollamos aplicaciones Spring en Spring Boot, entonces no necesitamos definir una sola configuración XML y casi ninguna o mínima configuración de anotaciones. El componente Spring Boot AutoConfigurator se encargará de proporcionar esa información. Por ejemplo, si queremos declarar una aplicación Spring MVC usando Spring IO Platform, entonces necesitamos definir mucha configuración XML como vistas, resolutores de vistas, etc. Pero si usamos el Marco de Spring Boot, entonces no necesitamos definir esa configuración XML. Spring Boot AutoConfigurator se encargará de esto. Si usamos el archivo jar “spring-boot-starter-web” en el archivo de construcción de nuestro proyecto, entonces Spring Boot AutoConfigurator resolverá vistas, resolutores de vistas, etc. automáticamente. Y también Spring Boot reduce la definición de la configuración de anotaciones. Si usamos la anotación @SpringBootApplication a nivel de clase, entonces Spring Boot AutoConfigurator agregará automáticamente todas las anotaciones requeridas al ByteCode de la clase Java. Si consultamos la Documentación de Spring Boot, podemos encontrar la siguiente definición para @SpringBootApplication.
@Target(value=TYPE)
@Retention(value=RUNTIME)
@Documented
@Inherited
@Configuration
@EnableAutoConfiguration
@ComponentScan
public @interface SpringBootApplication
Es decir, @SpringBootApplication = @Configuration + @ComponentScan + @EnableAutoConfiration. Eso es todo sobre el componente AutoConfigurate de Spring Boot. Discutiremos algunos detalles más con algunos ejemplos de Spring Boot en publicaciones futuras. NOTA:
- En palabras simples, Spring Boot Starter reduce las dependencias de la construcción y Spring Boot AutoConfigurator reduce la configuración de Spring.
- Como discutimos que Spring Boot Starter tiene una dependencia de Spring Boot AutoConfigurator, Spring Boot Starter activa automáticamente Spring Boot AutoConfigurator.
Spring Boot CLI
Spring Boot CLI (Interfaz de Línea de Comandos) es un software de Spring Boot para ejecutar y probar aplicaciones de Spring Boot desde la línea de comandos. Cuando ejecutamos aplicaciones de Spring Boot usando CLI, utiliza internamente los componentes Spring Boot Starter y Spring Boot AutoConfigurate para resolver todas las dependencias y ejecutar la aplicación. Incluso podemos ejecutar aplicaciones web de Spring con simples comandos de CLI de Spring Boot. Spring Boot CLI ha introducido un nuevo comando “spring” para ejecutar scripts de Groovy desde la línea de comandos. Ejemplo de comando spring:
spring run HelloWorld.groovy
Aquí HelloWorld.groovy es un archivo de script Groovy. Al igual que los nombres de archivo fuente de Java tienen la extensión *.java, los archivos de script Groovy tienen la extensión *.groovy. El comando “spring” ejecuta HelloWorld.groovy y produce salida. El componente CLI de Spring Boot requiere muchos pasos como la instalación de CLI, la configuración de CLI, desarrollar una aplicación Spring Boot simple y probarla. Así que vamos a dedicar otra publicación para discutirlo en detalle con algunos ejemplos de Spring Boot. Por favor, consulte mi próxima publicación sobre Spring Boot CLI.
Spring Boot Actuator
Los componentes de Spring Boot Actuator ofrecen muchas características, pero dos características principales son
- Proporcionar puntos finales de gestión a las aplicaciones Spring Boot.
- Métricas de aplicaciones Spring Boot.
Cuando ejecutamos nuestra aplicación web Spring Boot usando CLI, Spring Boot Actuator proporciona automáticamente el nombre de host como “localhost” y el número de puerto predeterminado como “8080”. Podemos acceder a esta aplicación usando el punto final “https://localhost:8080/“. En realidad, utilizamos métodos de solicitud HTTP como GET y POST para representar los puntos finales de gestión utilizando Spring Boot Actuator. Discutiremos algunos detalles más sobre Spring Boot Actuator en próximas publicaciones.
Internals of Spring Boot Framework
Siempre se recomienda entender cómo el Framework Spring Boot reduce las dependencias de la construcción, la configuración de Spring, etc. Cómo funciona Spring Boot bajo el capó. Si estás familiarizado con el lenguaje de programación Groovy, entonces conoces la mayoría de las cosas. En Groovy, no necesitamos agregar algunas importaciones y no es necesario agregar algunas dependencias al proyecto Groovy. Cuando compilamos scripts Groovy usando el compilador Groovy (groovyc), automáticamente agrega todas las declaraciones de importación predeterminadas y luego las compila. De la misma manera, el lenguaje de programación Groovy contiene un Resolvedor de Dependencias JAR para resolver y agregar todos los archivos jar requeridos al classpath del Proyecto Groovy. Internamente, el Framework Spring Boot utiliza Groovy para agregar algunos valores predeterminados como declaraciones de importación predeterminadas, método main() de la aplicación, etc. Cuando ejecutamos scripts Groovy desde la línea de comandos (CLI), utiliza este método main() para ejecutar la aplicación Spring Boot.
Grape
Grape es un motor de resolución de dependencias integrado. Grape es un administrador de dependencias JAR integrado en Groovy. Grape nos permite agregar rápidamente dependencias de repositorio Maven al classpath de nuestro proyecto para reducir las definiciones de archivos de construcción. El modelo de programación del Framework Spring Boot está principalmente inspirado en el modelo de programación de Groovy. El Framework Spring Boot depende internamente de estos dos componentes principales: Groovy y Grape. Puedes consultar la documentación de Grape en https://docs.groovy-lang.org/latest/html/documentation/grape.html para más detalles. Eso es todo sobre los Componentes e Internos de Spring. Discutiremos estos componentes en detalle con algunos ejemplos de Spring Boot en publicaciones futuras. Si tienes alguna pregunta, por favor déjame un comentario.