Puntos clave: El Framework Spring están un framework de código abierto para construir aplicaciones Java empresariales, centrado en simplificar el desarrollo con funciones como la inyección de dependencias y la programación orientada a aspectos. Se integra con otros proyectos de Spring, como Spring Boot y Spring Cloud.
- Las características principales incluyen contenedores IoC, acceso a datos y gestión de transacciones.
- Spring simplifica el desarrollo de aplicaciones web con arquitectura MVC y soporte para pruebas.
Java es uno de los lenguajes de programación más populares y utilizados, impulsando desde aplicaciones móviles hasta sistemas empresariales a gran escala. Dado que Java puede impulsar casi cualquier tipo de desarrollo, han evolucionado numerosos frameworks y herramientas para simplificar y agilizar los desarrollos de software basados en Java.
Cuando se trata de construir aplicaciones web basadas en Java, Spring es uno de los frameworks más populares. En este artículo, analizaremos el framework Spring y cómo construir aplicaciones Java utilizándolo.
¿Qué es el Marco de Primavera?
El Marco Spring está un marco de código abierto para construir aplicaciones Java empresariales. Spring pretende simplificar el proceso complejo y engorroso de desarrollo de aplicaciones Java empresariales ofreciendo un marco que incluye tecnologías como:
- Programación orientada a aspectos (AOP)
- Inyección de dependencias (DI)
- Simple y viejo objeto Java (POJO)
Incluso con todas estas tecnologías, Spring está un framework ligero que puede usarse para Crear aplicaciones web empresariales escalables, seguras y robustas.
A nivel macro, podemos considerar el framework Spring como un conjunto de subframeworks como Spring Web Flow, Spring MVC y Spring ORM. Además de Java, Spring también soporta Kotlin y Groovy.
El marco de Spring también es la base que impulsa todos los demás proyectos basados en Spring, como:
- Bota de muelle
- Nube de primavera
- GraphQL de muelle
Características principales de Spring Framework
Veamos las características principales del framework Spring.
Contenedor IoC (Inversión de Control)
El contenedor IoC es una de las características principales de Spring que proporciona una forma simplificada de configurar y gestionar objetos Java. Este contenedor es responsable de gestionar el ciclo de vida de un objeto Java definido, aumentando significativamente la configurabilidad de una aplicación basada en Spring.
IoC utiliza patrones de inyección de dependencias o búsqueda de dependencias para proporcionar la referencia del objeto durante la ejecución. El contenedor consiste en código ensamblador que están necesarios para la gestión de configuración.
Spring proporciona paquetes org.springframework.beans y org.springframework.context que pueden usarse para facilitar estas funciones.
Soporte para programación orientada a aspectos
AOP pretende proporcionar mayor modularidad a las preocupaciones transversales, que son funciones que abarcan toda la aplicación, tales como:
- Tala
- Caché
- Gestión de transacciones
- Autenticación
- Etcétera.
Además, AOP complementa la programación orientada a objetos al proporcionar una forma diferente de estructurar el programa, donde la modularidad OOP está basada en clases.
En AOP, la unidad principal de modularidad es un aspecto (cuestión transversal). Esto permite a los usuarios utilizar AOP para Crear aspectos personalizados y servicios empresariales declarativos. El contenedor IoC no depende de AOP, lo que ofrece mayor libertad a los desarrolladores para seleccionar su método de programación preferido.
Sin embargo, la Programación Orientada a Aspectos combinada con el Spring IoC proporciona una solución robusta de middleware.
Marco de acceso a datos
Los problemas de comunicación de bases de datos son uno de los problemas más comunes que enfrentan los desarrolladores al desarrollar aplicaciones. Spring simplifica el proceso de comunicación con bases de datos al proporcionar soporte directo para marcos populares de acceso a datos en Java, como JDBC, Hibernate, Java Persistence API (JPA), etc.
Además, ofrece funciones como gestión de recursos, gestión de excepciones y envolvimiento de recursos para todos los marcos de acceso a datos soportados, simplificando aún más el proceso de desarrollo.
Marco de gestión de transacciones
A diferencia de la API de Transacciones de Java (JTA), el Marco de Gestión de Transacciones de Spring no está limitado a transacciones globales y anidadas. Spring ofrece un mecanismo de abstracción para Java que permite a los usuarios:
- Trabajar con transacciones locales, globales y anidadas
- Puntos de guardado
- Simplifica la gestión de transacciones en toda la aplicación
El Marco de Acceso a Datos Spring se integra directamente con el Marco de Gestión de Transacciones con soporte para mensajería y caché. Esto permite a los desarrolladores Crea sistemas transaccionales ricos en funcionalidades que abarcan las aplicaciones sin depender de EJB o JTA.
Marco de muelle MVC
El Spring MVC permite a los desarrolladores Crea aplicaciones utilizando el popular patrón MVC. Es un framework basado en peticiones que permite a los desarrolladores Crea fácilmente implementaciones personalizadas de MVC que se adapten exactamente a sus necesidades.
El componente central de Spring MVC están la clase DispatcherServlet, que gestiona las solicitudes de los usuarios y luego las reenvía al controlador correcto. Esto permite al controlador procesar la solicitud, Crea el modelo y luego proporcionar la información al usuario final a través de una vista especificada.
Servicio web de primavera
Este componente de Spring Web Service ofrece una forma simplificada de Crea y gestiona endpoints de servicios web en la aplicación. Ofrece un enfoque en capas que puede gestionarse usando XML y puede usarse para asignar solicitudes web a un objeto específico.
Marcos de prueba de muelle
Las pruebas están una parte fundamental de cualquier desarrollo. Spring simplifica las pruebas dentro del marco con componentes como:
- Objetos simulados
- Marco TestContext
- Test de primavera de la MVC
- Etcétera.
(Lee sobre frameworks de automatización de pruebas.)
Arquitectura del marco de muelles
Bien, hemos analizado las características principales que hacen de Spring un excelente framework. Ahora vamos a analizar la arquitectura de Spring, la arquitectura que facilita todas estas características.
El diagrama anterior representa los componentes básicos de la arquitectura Spring. Como te puede Ve, Spring están construido usando diferentes módulos que Permite distintas funcionalidades.
Contenedor principal
Este contiene los módulos fundamentales que son la piedra angular del marco Spring.
- Core (spring-core) está el núcleo del framework que impulsa funciones como la inversión de control e inyección de dependencias.
- Los granos (judías de primavera) proporcionan Beanfactory, que es una implementación sofisticada del patrón de fábrica.
- Context (spring-context) se basa en Core y Beans y proporciona un medio para acceder a objetos definidos. ApplicationLa interfaz Context es la parte central del módulo Context, y el soporte spring-context-proporciona soporte para interacciones de terceros como caché, envío de correo y motores de plantillas.
- SpEL (spring-expression) permite a los usuarios utilizar el Lenguaje de Expresiones Spring para consultar y manipular el grafo de objetos en tiempo de ejecución.
Acceso/integración de datos
Esto incluye los módulos que son utilizados para gestionar el acceso a datos y el procesamiento de transacciones en una aplicación.
- JDBC (spring-jdbc) proporciona una capa de abstracción JDBC que elimina la necesidad de separar la codificación JDBC al tratar con bases de datos.
- ORM (spring-orm) son capas de integración para API populares de mapeo objeto-relacional como JPA y JDO Hibernate.
- OXM (spring-oxm) es la capa de abstracción que soporta implementaciones de mapeo de objetos/XML como JAXB y XStream.
- JMS (spring-jms) es el módulo Java Messaging Service que crea y consume mensajes que se integran directamente con el módulo de mensajería Spring.
- Transaction (spring-tx) ofrece gestión programática y declarativa de transacciones para clases que incluyen interfaces especiales y POJOs.
Web
La capa web se relaciona con módulos que alimentan funciones web en Spring.
- WebSocket (spring-websocket) alimenta la comunicación basada en web socket para clientes y servidores.
- Servlet (spring-webmvc) es el módulo Spring WebMVC que contiene las implementaciones MVC y REST.
- Web (spring-web) proporciona todas las funciones básicas orientadas a la web y contiene un cliente HTTP y partes relacionadas con la web del remoto Spring.
- El portlet (spring-webmvc-portlet) proporciona la implementación MVC para ser utilizada en un entorno de portlet.
Otros módulos
- AOP (spring-aop) proporciona una implementación de programación orientada a aspectos que puede utilizarse al crear aplicaciones.
- Aspects (resort-aspects) permite la integración directa con la extensión de programación AspectJ por parte de la fundación eclipse.
- La instrumentación (instrumento de resorte) es el soporte de instrumentación de clases y las implementaciones de cargadores de clases para servidores de aplicaciones.
- La mensajería (spring-messaging) proporciona una plataforma robusta para gestionar la mensajería en aplicaciones.
- Test (spring-test) están el módulo de prueba Spring que soporta pruebas unitarias e integradas con JUnit y TestNG.
Empezando con el framework de Spring
Ahora que entendemos qué hace de Spring un marco realmente excelente, vamos a Ve cómo Comienza desarrollar un proyecto Spring.
Utilizaremos un entorno Windows y Visual Studio Code como nuestro IDE para el siguiente ejemplo. Primero, necesitamos Java instalado en nuestro PC. Tú puedes Obtén los últimos binarios Java de código abierto preconstruidos (OpenJDK) del proyecto Adoptium. Usaremos la última versión de LTS en el momento de escribir este artículo, que están OpenJDK 17 (LTS).
Aunque te siempre puede Crea un proyecto Spring manualmente, el inicializador de Spring (https://start.spring.io/) ofrece a los usuarios una forma sencilla de configura el proyecto usando Spring Boot. Spring Boot están una extensión del framework Spring que permite a los usuarios Crea aplicaciones independientes basadas en Spring con dependencias mínimas.
El inicializador de Spring proporciona una plataforma centralizada para Crea fácilmente un proyecto Spring con diferentes opciones, incluyendo tipo de proyecto (Maven/Gradle), lenguaje (Java, Kotlin, Groovy), metadatos del proyecto, empaquetado, versión de Java y dependencias.
Vamos a Crea un proyecto Maven sencillo llamado test_app en el grupo com.myproject usando Java y Spring Boot 2.5.5, dirigido a Java 17 (OpenJDK) con Spring Web como dependencia.
La acción anterior generará un archivo zip. Extrae ese archivo zip y abre la carpeta en el IDE. Como son usamos Visual Studio Code como nuestro IDE, Haz de que te has instalado las extensiones VSCode adecuadas para soportar Java y Spring. A continuación son las extensiones recomendadas.
- Extension Pack para Java - Visual Studio Marketplace
- Paquete de extensión Spring Boot - Visual Studio Marketplace
Navega al archivo Java principal (Ejemplo: :\src\main\java\com\myproject\test_app\TestAppApplication.java) y cambia el código de la siguiente manera. Será Crea un servidor web sencillo que devuelve un saludo cuando un usuario navegue a la URL del saludo.
package com.myproject.test_app;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@SpringBootApplication
@RestController
public class TestAppApplication {
public static void main(String[] args) {
SpringApplication.run(TestAppApplication.class, args);
}
@GetMapping("/greeting")
public String hello(@RequestParam(value = "name", defaultValue = "World") String name) {
return String.format("<h1>Hello %s!, This is My First Spring Project</h1>", name);
}
}
Vista VS Code:
Ahora podemos construir y ejecutar el proyecto abriendo el terminal en la raíz de la carpeta del proyecto y ejecutando el siguiente comando.
/mvnw spring-boot:run
Resultado:
Abrirá Comienza el servidor web y podremos navegar a la página de saludos usando el siguiente formato de URL.
http://localhost:8080/greeting?name=<Value>
Por ejemplo, si navegamos hasta http://localhost:8080/greeting?name=Jake URL, aparecerá un saludo para Jake.
Spring puede impulsar aplicaciones Java empresariales
Spring están un potente framework Java que puede usarse para impulsar aplicaciones Java de nivel empresarial a cualquier escala. Aunque a veces pueda volverse complejo y abrumador, te puede Obtén fácilmente el truco de este framework y construir el próximo gran software si te Comienza desde cero.
Spring Framework, junto con todos los demás proyectos de primavera, proporciona todas las herramientas y características necesarias para satisfacer cualquier necesidad del usuario mientras simplifica el proceso de desarrollo.
Lecturas relacionadas
Estas publicaciones son mías y no representan necesariamente la posición, estrategias u opinión de BMC.