El Framework Spring es uno de los marcos de Java EE más populares. En este artículo, aprenderemos sobre lo siguiente:
- arquitectura del framework Spring
- Componentes principales de Spring
- Varios proyectos bajo el paraguas del framework Spring.
I looked at the Google Trends chart for Spring Framework, Servlet, JSP, and JSF. It’s clear that Spring is far ahead from all other Java EE technologies.

¿Qué es el Framework Spring?
Spring es uno de los frameworks más populares para la edición empresarial de Java. Los desarrolladores de todo el mundo utilizan Spring para desarrollar aplicaciones fiables y de alta calidad. El framework Spring fue diseñado por Rod Johnson. Desde entonces, Spring se ha convertido en una tecnología alternativa en el mundo de Java para el modelo EJB. Puedes crear diferentes tipos de aplicaciones utilizando el framework Spring.
Conceptos Principales de Spring – DI, IoC, AOP
- Es imposible entender qué es el Framework Spring sin entender qué es la Inyección de Dependencias y la Inversión de Control . La Inyección de Dependencias, también llamada DI, es uno de los tipos de Inversión de Control (IoC).
- Inversión de Control – este es el principio de la programación orientada a objetos, en el cual los objetos del programa no dependen de implementaciones concretas de otros objetos, pero pueden tener conocimiento sobre sus abstracciones (interfaces) para una interacción posterior.
- Inyección de Dependencias – es una composición de patrones de diseño estructural, en la cual para cada función de la aplicación existe un objeto (servicio) condicionalmente independiente que puede necesitar usar otros objetos (dependencias) conocidos por él a través de interfaces. Las dependencias se transfieren (implementan) al servicio en el momento de su creación. Esta es una situación en la que introducimos un elemento de una clase en otra. En la práctica, la inyección de dependencias se implementa pasando parámetros al constructor o usando setters. Las bibliotecas que implementan este enfoque también se llaman contenedores IoC.
- Programación Orientada a Aspectos – un paradigma de programación que permite distinguir la funcionalidad transversal (funcional) en una aplicación. Estas funciones, que abarcan múltiples nodos de aplicación, se llaman preocupaciones transversales y estas notas transversales se separan de la lógica de negocios inmediata de la aplicación. En la POO, la unidad clave es la clase, mientras que en la POA, el elemento clave es el aspecto. La inyección de dependencias ayuda a separar las clases de la aplicación en módulos separados, y la POA ayuda a separar las preocupaciones transversales de los objetos que afectan.
Arquitectura del Framework Spring
El Framework Spring está dividido en varios módulos separados, lo que le permite decidir cuáles utilizar en su aplicación. La siguiente imagen ilustra los módulos más importantes de la arquitectura del Framework Spring. Veamos los módulos del ecosistema Spring uno por uno.
Componentes Principales del Framework Spring
El contenedor principal de Spring consta de cuatro módulos: SpEL, Context, Core y Beans. La descripción de estos elementos es la siguiente:
- El módulo SpEL proporciona un lenguaje de expresión potente para manipular objetos durante la ejecución.
- El Contexto se construye sobre la base de Beans y Core y le permite acceder a cualquier objeto que esté definido en la configuración. El elemento clave del módulo Contexto es la interfaz ApplicationContext.
- El módulo Core proporciona partes clave del framework, incluyendo propiedades de IoC y DI.
- El módulo Bean es responsable de crear y gestionar Beans de Spring – es la unidad de estructura del contexto de la aplicación.
Marco de trabajo Spring Web
La capa web del marco de trabajo Spring consiste en Web, Web-MVC, Web-Socket, Web-Portlet, etc.
- El módulo Web proporciona funciones como la descarga de archivos, la creación de aplicaciones web, servicios web REST, etc.
- Web-MVC contiene una implementación de Spring MVC para aplicaciones web.
- Web-Socket proporciona soporte para la comunicación entre el cliente y el servidor, utilizando Web-Sockets en aplicaciones web.
- Web-Portlet proporciona una implementación de MVC con entorno de portlets
Acceso a Datos del Marco de Trabajo Spring
El contenedor de Acceso/Integración de Datos consiste en JDBC, ORM, OXM, JMS y el módulo de Transacciones.
- JDBC proporciona una capa abstracta de JDBC y elimina la necesidad de que el desarrollador registre manualmente el código monótono asociado con la conexión a la base de datos.
- Spring ORM proporciona integración con ORMs populares como Hibernate, JDO, que son implementaciones de JPA.
- El módulo OXM es responsable de vincular el objeto / XML – XMLBeans, JAXB, etc.
- El módulo JMS (Servicio de Mensajes Java) es responsable de crear, enviar y recibir mensajes.
- Transactions admite la gestión de transacciones para clases que implementan ciertos métodos y POJOs.
Módulos Varios
Spring también incluye varios módulos importantes, como AOP, Aspectos, Instrumentación, Mensajería y Pruebas.
- AOP implementa la programación orientada a aspectos y permite utilizar todo el arsenal de capacidades de AOP.
- El módulo de Aspectos proporciona integración con AspectJ, que también es un potente marco de AOP.
- La Instrumentación es responsable de admitir la instrumentación de clases y el cargador de clases, que se utilizan en aplicaciones de servidor.
- El módulo de Mensajería proporciona soporte STOMP.
- Finalmente, el módulo de Pruebas permite realizar pruebas utilizando TestNG o el marco JUnit.
Funcionalidades de Spring 5
Spring 5 trajo una actualización masiva a Spring 4. Algunas de las características importantes de Spring 5 son:
- Soporte para Java 8, Java 9, Java EE 7, Java EE 8, Servlet 4.0, Bean Validation 2.0 y JPA 2.2. Me alegra ver que Spring está tratando de ponerse al día con las últimas versiones de las principales tecnologías utilizadas.
- Mejora en el registro con el nuevo módulo – spring-jcl.
- Las operaciones de archivo utilizan flujos NIO 2, por lo tanto, mejoran el rendimiento.
- Soporte para Reactor 3.1 Flux y Mono, así como RxJava 1.3 y 2.1 como valores de retorno de los métodos del controlador de Spring MVC.
- Soporte para Kotlin, Project Lombok, JSON Binding API como una alternativa a Jackson y GSON.
- Spring WebFlux – Spring se vuelve Reactivo.
- Soporte para JUnit 5
- Soporte de programación funcional a través de Kotlin.
Puedes consultar los proyectos de Spring en nuestro Repositorio de GitHub.
Referencias: Sitio web oficial de Spring, Documentación de referencia de Spring
Source:
https://www.digitalocean.com/community/tutorials/spring-framework