¿Qué es Spring? El framework de Java en profundidad

JavaScript The good parts
JavaScript The good parts. Mi opinión y recomendación de lectura
14 de septiembre de 2023
Cómo crear un proyecto en Spring desde cero
Cómo crear un proyecto en Spring desde cero
7 de diciembre de 2023
JavaScript The good parts
JavaScript The good parts. Mi opinión y recomendación de lectura
14 de septiembre de 2023
Cómo crear un proyecto en Spring desde cero
Cómo crear un proyecto en Spring desde cero
7 de diciembre de 2023

Java es uno de los lenguajes de programación más usados en la actualidad. Aunque es un leguaje que tiene algunos años, ha sabido modernizarse con el paso del tiempo. De hecho Spring dice de sí mismo «Spring makes Java modern«. Hoy vamos a ver qué es Spring y qué nos permite hacer en nuestro día a día desarrollando en Java.

¿Qué es Spring?

Spring es un framework o marco de desarrollo para Java que nos proporciona una serie de herramientas que facilitan el desarrollo de aplicaciones en Java. Esto nos habilita para crear aplicaciones de mayor calidad y mas fáciles de mantener. Aunque estos dos aspectos dependen mucho de nosotros como programadores, el framework si que nos facilita la vida para que podamos enfocarnos más en calidad y mantenibilidad entre otros aspectos.

¿Qué podemos hacer con Spring?

Este framework nos da una serie de herramientas que nos permiten:

  • Crear microservicios de forma sencilla
  • Usar programación reactiva que nos permite optimizar los recursos de computo a traves de la asincronía
  • Soporte para la nube. Su lema es «Tu código, cualquier nube«. Esto significa que nos ofrece una capa de abstracción de la infraestructura, lo que a su vez, nos habilita para poder implementar arquitecturas actuales como la Clean Architecture o la «nueva» arquitectura Hexagonal (podrás encontrar artículos donde dice que ni es nueva, ni es arquitectura, ni es hexagonal 🤭)
  • Crear aplicaciones web de forma rápida, segura y responsive
  • Nos da soporte para serveless que nos permite scalar a demanda
  • Crear procesos Batch para automatizar tareas

Como puedes ver, Spring es un framework muy versátil y lo que es más importante, modular. Nos permite tomar solo la parte que necesitamos. Es decir, si yo necesito crear un proceso batch, no requiero la parte de microservicios, solo utilizo Spring Batch.

¿Qué ofrece Spring?

Para poder soportar las funcionalidades que ofrece Spring en el punto anterior, el framework nos ofrece un conjunto de (sub)frameworks con los que podemos trabajar para crear en cada momento la aplicación que necesitemos. Estos projectos o frameworks son:

  • Spring Boot
  • Spring Framework
  • Spring Cloud
  • Spring Cloud Data Flow
  • Spring Data
  • Spring Integration
  • Spring Batch
  • Spring Security
  • Spring Authorization Server
  • Spring for GraphQL
  • Spring Session
  • Spring HATEOAS
  • Spring Modulith
  • Spring REST Docs
  • Spring AMQP
  • Spring Flo
  • Spring for Apache Kafka
  • Spring LDAP
  • Spring for Apache Pulsar
  • Spring Shell
  • Spring Statemachine
  • Spring Web Flow
  • Spring Web Services

Todos estos, los puedes usar de forma independiente o combinandolos de forma que puedas utilizar las características que necesites en cada aplicación.

A continuación vamos a ver de forma general algunos de los más populares.

Spring Framework

Es el framework base de Spring que nos permite desarrollar aplicaciones empresariales en Java en cualquier tipo de plataforma. En este aspecto, el de la plataforma, es Spring el que se encarga del soporte para la infraestructura de forma que el equipo de desarrollo se puede centrar en la lógica de negocio y nos permite separar estas dos capas: infraestructura y negocio.

Algunas de las características que nos ofrece son:

  • Inyección de dependencias
  • Data binding
  • Conversión de tipos
  • Soprote para i18n
  • Soporte para tests, mockeo de objetos, WebTestClient, Spring MVC Test
  • Acceso a capa de datos
  • Spring MVC (Model View Controller)
  • Spring Web Flux
  • Integración con una gran cantidad de sistemas externos

Spring Boot

Spring Boot es una extensión de Spring Framework que simplifica el proceso de construcción y despliegue de aplicaciones y servicios basados en Spring con una mínima configuración. Algunas de sus características son:

  • Creación de aplicaciones Spring independientes
  • Servidor embebido directamente (Tomcat, Jetty o Undertow)
  • Proporciona dependencias inciales o starters que simplifican la configuración de la aplicación
  • Configuración automática de librerias de Spring y de terceros (siempre que sea posible)
  • Proporciona funcionalidades ya listas para usar como métricas y health checks
  • No es necesaria la configuración a través de XML

Spring Data

Spring Data provee un estándar para acceder a datos donde se incluyen bases de datos relacionales, no relacionales, servicios de nube, etc.

Algunas características que podemos mencionar son:

  • Repositorio de datos y abstracción de mapeo de objetos
  • Fácil configuración a través de JavaConfig o XML
  • Soporte para gran variedad de fuentes de datos

Spring Security

Spring Security es un framework de seguridad que nos ofrece una capa personalizable de autenticación y autorización de acceso a nuestra aplicación.

Algunas de las características que podemos mencionar son:

  • Soporte completo para autenticación y autorización
  • Protección contra ataques tipo session fixation, cross site request forgery, clickjacking, etc.
  • Integración con API Servlet
  • Integración con Spring Web MVC

Spring Batch

Es un framework completo para desarrollar aplicaciones de procesos batch.

Sus características son:

  • Gestión de transacciones
  • Declarative I/O
  • Gestión de arrancado/pausa/parada de procesos
  • Gestión de Reintentar/Omitir procesos

Conclusión

Como puedes ver, Spring es un framework muy completo construido sobre Java que te da las herramientas para crear aplicaciones empresariales en Java de forma:

  • Rápida
  • Segura
  • Con soporte para gran variedad de nubes
  • Con soporte para gran variedad de fuentes de datos
  • Business centric
  • Etc

Si llevas tiempo sin trabajar con Java, descarta esa idea que tienes de Java JDK 1.7 🤭

Hoy en día, Java es un lenguaje moderno con una gran cantidad de herramientas disponibles para no partir de cero creando aplicaciones, con mucha documentación y una gran comunidad detrás.

Si es tu primera toma de contacto con Java, puedes comenzar aprendiendo el lenguaje. Yo siempre digo que no puedes pretender crear un gran libro con estructuras gramaticales complejas (Spring) si no conoces primero el idioma en que estas escribiendo (Java). Así que si este es tu caso te recomiend partir primero conociendo el lenguaje. Lo puedes hacer de muchas formas: documentación oficial de Java, Youtube o este curso de Java en Udemy, por poner algunos ejemplos.

Si por el contrario ya conoces Java y quieres aprender Spring, lo puedes hacer a través de la documentación oficial.

Ahora ya sabes qué es Spring 🚀 Si lo deseas puedes ver más artículos como este en nuestra sección de Java.

¡Espero que te haya sido de utilidad!

Antonio J. Galisteo
Antonio J. Galisteo
Soy Antonio J. Galisteo. Ingeniero de software con amplia experiencia en desarrollo frontend, backend, aplicaciones móviles y de escritorio.

Deja una respuesta

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

¿Qué es Spring? El framework de Java en profundidad
Este sitio web usa cookies para mejorar tu experiencia. Al navegar por este sitio aceptas nuestra Política de Protección de Datos.
Leer más