Spring Boot

 Framework Spring Boot

Daniel Garduño Mateo

¿Qué es?

Spring Boot es un framework basado en Spring que simplifica la creación de aplicaciones independientes y basadas en producción, que se pueden "correr" de inmediato.

Java Spring Framework (Spring Framework) es una popular estructura empresarial de código abierto para crear aplicaciones independientes de nivel de producción que se ejecutan en la máquina virtual Java (JVM).

Características

Es una herramienta que hace que el desarrollo de aplicaciones web y microservicios con Spring Framework sea más rápido y fácil a través de tres funcionalidades principales:

  1. Configuración automática

  1. Un enfoque obstinado de la configuración

  2. La capacidad de crear aplicaciones independientes
Estas características funcionan juntas para brindarle una herramienta que le permite configurar una aplicación basada en Spring con una configuración y preparación mínimas.

Spring Framework ofrece una función de inyección de dependencias que permite que los objetos definan sus propias dependencias que el contenedor de Spring luego inyecta en ellos. Esto permite a los desarrolladores crear aplicaciones modulares que constan de componentes poco acoplados que son ideales para microservicios y aplicaciones de red distribuida.

Persistencia

  • Es la capacidad de almacenar datos de manera duradera
  • Puede utilizar medios como una base de datos
  • Permite recuperar los datos guardados una vez almacenados, incluso si el programa que generó los datos se ha detenido


Spring Framework también ofrece soporte integrado para tareas típicas que una aplicación necesita realizar, como enlace de datos, conversión de tipos, validación, manejo de excepciones, gestión de recursos y eventos, internacionalización y más.

Se integra con varias tecnologías Java EE como RMI (Invocación de método remoto), AMQP (Protocolo de cola de mensajes avanzado), Servicios web Java y otros. En resumen, Spring Framework proporciona a los desarrolladores todas las herramientas y características que necesitan para crear aplicaciones Java EE multiplataforma poco acopladas que se ejecutan en cualquier entorno.




MVC

El Model-View-Controller (MVC) es un patrón de diseño de software que separa la representación de la información de la interacción del usuario con ella. Esta separación hace que el diseño sea más modular, lo que permite una mayor reutilización del código. El patrón MVC se usa ampliamente en la programación actual, especialmente en aplicaciones web.

El patrón MVC se compone de tres partes: el modelo, la vista y el controlador. El modelo contiene los datos, la vista muestra los datos y el controlador maneja la entrada del usuario.

El patrón MVC tiene varios beneficios:

  • Permite al desarrollador cambiar más fácilmente los datos sin afectar la vista.
  • Permite al desarrollador cambiar más fácilmente la vista sin afectar los datos.
  • Permite al desarrollador cambiar más fácilmente el controlador sin afectar los datos o la vista.
  • Puede conducir a la duplicación de código si el modelo, la vista y el controlador no están bien diseñados.
  • Puede ser difícil realizar pruebas unitarias de las partes individuales del patrón MVC.

El patrón MVC no está exento de inconvenientes:

Spring Boot es un marco que facilita la creación de aplicaciones basadas en Spring independientes y de grado de producción. Toma una visión obstinada de la plataforma Spring y se aparta del camino del desarrollador, lo que facilita la creación de aplicaciones listas para producción.



Ventajas del Spring Boot


  • Rápido desarrollo: Configuración mínima requerida para arrancar un proyecto.
  • Configuración Automática: Elimina la necesidad de configuraciones manuales complejas.
  • Standalone: Ejecuta aplicaciones sin necesidad de configuraciones adicionales.
  • Microservices-Friendly: Ideal para arquitecturas basadas en microservicios.
  • Gran Comunidad y Ecosistema: Soporte robusto y documentación extensa.

A pesar de lo completo que es Spring Framework y de las funcionalidades que presenta, hacen falta un tiempo considerable y conocimientos suficientes para configurar, instalar e implementar las aplicaciones Spring. Spring Boot alivia este esfuerzo con tres funcionalidades importantes.

Configuración automática


La configuración automática significa que las aplicaciones se inicializan con dependencias preestablecidas que no tienen que configurarse manualmente. Como Java Spring Boot viene con funciones de configuración automática integradas, configura automáticamente tanto el Spring Framework subyacente como los paquetes de terceros según su configuración (y según las mejores prácticas, lo que ayuda a evitar errores).

Aunque puede anular estos valores predeterminados una vez que se completa la inicialización, la función de configuración automática de Java Spring Boot le permite comenzar a desarrollar sus aplicaciones basadas en Spring rápidamente y reduce la posibilidad de errores humanos.

Enfoque obstinado


Spring Boot utiliza un enfoque obstinado para agregar y configurar dependencias de inicialización, según las necesidades de su proyecto. Siguiendo su propio criterio, Spring Boot elige qué paquetes instalar y qué valores predeterminados usar, en lugar de pedirle que tome todas esas decisiones usted mismo y configure todo manualmente.

Puede definir las necesidades de su proyecto durante el proceso de inicialización, durante el cual elige entre varias dependencias de inicio, denominadas Spring Starters, que cubren casos de uso típicos. La ejecución de Spring Boot Initializr se realiza mediante un simple formulario websin programación.

Por ejemplo, la dependencia de iniciador "Spring web" permite crear aplicaciones web basadas en Spring con una configuración mínima al agregar todas las dependencias necesarias, como el servidor web Apache Tomcat, a su proyecto. "Spring Security" es otra dependencia de inicialización popular que agrega automáticamente funciones de autenticación y control de acceso a su aplicación.

Spring Boot incluye más de 50 Spring Starters, y hay muchos más starters de terceros disponibles.

Aplicaciones independientes


Spring Boot ayuda a los desarrolladores a crear aplicaciones que simplemente se ejecutan. Específicamente, le permite crear aplicaciones independientes que se ejecutan por sí mismas, sin depender de un servidor web externo, al integrar un servidor web como Tomcat o Netty en su aplicación durante el proceso de inicialización. Como resultado, puede iniciar su aplicación en cualquier plataforma con el comando Ejecutar (puede renunciar esta función para crear aplicaciones sin un servidor web integrado).


Arquitectura



El módulo principal viene a ser el núcleo o Core que se encarga de: 

  • La creación y gestión de los Beans 
  • Lectura de ficheros config 
  • Manejo de propiedades y dependencias 
  • Uso del contexto como almacén de los Beans en memoria 

  • Spring Expression Language para manipular objetos en tiempo de ejecución 

En el módulo de Infraestructura estarían los sub-módulos de  AOP, Aspects, Instrumentación y Messaging, donde se manejan las transacciones, logueos, seguridad de las aplicaciones, etc.

En el módulo de acceso a datos, se utilizan frameworks ORM como Hibernate y JPA, se utiliza una versión de JDBC con menos código y más sencillo de utilizar gracias a las helper clases. Por otro lado incluye el módulo de JMS (Java Messaging Service) para el manejo de mensajes en Java (colas o tópicos), reducción de llamadas a bases de datos gracias al módulo de Transactions.

El módulo Web/MVC nos permitirá la programación web distribuida, acceso remoto y utilizar tecnologías como JSF o Struts. 

Por último, el módulo de pruebas incluye los Mock Objects, que son objetos simulados para poder realizar pruebas en aplicaciones Java.

Dependencias

Spring Boot utiliza Maven como herramienta de construcción y gestión de dependencias.


<groupId>org.springframework.boot</groupId> 

<artifactId>spring-boot-starter-web</artifactId>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-data-jpa</artifactId>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-thymeleaf</artifactId>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-test</artifactId>

Comentarios