Spring facilita la creación de aplicaciones empresariales utilizando Java. Proporciona todo lo necesario para utilizar el lenguaje Java en un entorno empresarial, incluido el soporte para Groovy y Kotlin como lenguajes alternativos en la JVM, y ofrece la flexibilidad de crear muchos tipos de arquitecturas según las necesidades de la aplicación. A partir de Spring Framework 5.1, Spring requiere JDK 8+ (Java SE 8+) y proporciona soporte nativo para JDK 11 LTS. Se sugiere la actualización 60 de Java SE 8 como la versión mínima válida del parche para Java 8, pero generalmente se recomienda utilizar la última versión del parche.
Spring admite una amplia gama de casos de uso. En una gran empresa, las aplicaciones se utilizan a menudo durante largos períodos de tiempo y deben ejecutarse en el JDK y el servidor de aplicaciones, cuyo ciclo de actualización está fuera del control del desarrollador. Algunos pueden ejecutarse como un único archivo jar en un servidor integrado, posiblemente en un entorno de nube. Otras pueden ser aplicaciones independientes (como cargas de trabajo por lotes o de integración) que no requieren un servidor.
Spring es de código abierto. Tiene una comunidad grande y activa que proporciona comentarios constantes basados en una amplia gama de casos de uso del mundo real. Esto ha ayudado a Spring a evolucionar con éxito durante mucho tiempo.
¿Qué queremos decir con "Spring"?
El término "Spring" significa diferentes cosas en diferentes contextos. Puede usarse para referirse al proyecto Spring Framework que inició todo. Con el tiempo, se construyeron otros proyectos de Spring sobre Spring Framework. La mayoría de las veces, cuando la gente dice "Primavera", se refiere a toda la familia de proyectos. Esta documentación de referencia se centra en el núcleo: el propio Spring Framework.
El Spring Framework está dividido en módulos. Las aplicaciones pueden elegir qué módulos necesitan. Se basa en los módulos del contenedor principal, incluido el modelo de configuración y el mecanismo de inyección de dependencia (DI). Además, Spring Framework proporciona soporte básico para varias arquitecturas de aplicaciones, incluida la mensajería, los datos transaccionales y la persistencia, y la web. También incluye el marco web Spring MVC basado en servlets y, en paralelo, el marco web reactivo Spring WebFlux.
Una nota sobre los módulos: los Spring jars le permiten implementarlos en la ruta del módulo JDK 9 ( " Rompecabezas") Para su uso en aplicaciones habilitadas para Jigsaw, los archivos jar de Spring Framework 5 vienen con entradas de manifiesto "Automatic-Module-Name" que definen los nombres de los módulos estables a nivel de idioma ("spring.core", "spring.context", etc.). independiente de los nombres de los artefactos jar (los archivos jar tienen el mismo patrón de nomenclatura con "-" en lugar de ".", por ejemplo, "spring-core" y "spring-context"). Por supuesto, los archivos Spring jar todavía funcionan bien en el classpath tanto en JDK 8 como en 9+.
Historia de Spring y Spring Framework
Spring nació en 2003 como reacción a la complejidad de las primeras especificaciones J2EE. Aunque algunos consideran que Java EE y Spring son competidores, Spring es esencialmente complementario a Java EE. El modelo de programación Spring no cubre la especificación de la plataforma Java EE; más bien, se integra con especificaciones individuales cuidadosamente seleccionadas del EE generalizado:
- API de servlet (JSR 340)
- API WebSocket (JSR 356)
- Utilidades de concurrencia (JSR 236)
- API de enlace JSON (JSR 367 )
- Validación de Bean (JSR 303 )
- JPA (JSR 338)
- JMS (JSR 914)
- y Configuraciones JTA/JCA para coordinar transacciones si es necesario.
Spring Framework también admite especificaciones de inyección de dependencia (JSR 330) y anotaciones generales ( JSR 250), que los desarrolladores de aplicaciones pueden utilizar en lugar de los mecanismos específicos de Spring proporcionados por Spring Framework.
A partir de Spring Framework 5.0, Spring requiere al menos el nivel Java EE 7 (por ejemplo , Servlet 3.1+, JPA 2.1+), al tiempo que proporciona integración nativa con nuevas API en el nivel Java EE 8 (por ejemplo, Servlet 4.0, JSON Binding API) cuando se encuentran en tiempo de ejecución. Esto hace que Spring sea totalmente compatible, por ejemplo, con Tomcat 8 y 9, WebSphere 9 y JBoss EAP 7.
El papel de Java EE en el desarrollo de aplicaciones ha evolucionado con el tiempo. En los primeros días de Java EE y Spring, las aplicaciones se creaban para implementarse en un servidor de aplicaciones. Hoy en día, con Spring Boot, las aplicaciones se crean de forma compatible con Devops y la nube mediante un contenedor de servlets integrado que es fácil de modificar. A partir de Spring Framework 5, una aplicación WebFlux ni siquiera usa la API de Servlet directamente y puede ejecutarse en servidores (como Netty) que no son contenedores de servlet.
Spring continúa innovando y evolucionando. Además de Spring Framework, existen otros proyectos como Spring Boot, Spring Security, Spring Data, Spring Cloud, Spring Batch, etc. Es importante recordar que cada proyecto tiene su propio repositorio de código fuente, sistema de seguimiento de problemas y frecuencia de lanzamiento de nuevas versiones. Consulte spring.io/projects para obtener una lista completa de proyectos Spring.
Principio de diseño
Cuando aprendes un marco, es importante comprender no solo lo que hace, sino también cómo funciona. Estos son los principios básicos de cómo funciona Spring Framework:
- Elección en todos los niveles. Spring permite aplazar las decisiones de diseño hasta "lo más tarde posible". Por ejemplo, puede cambiar de proveedor de soluciones de almacenamiento utilizando la configuración del sistema sin cambiar su código. Lo mismo se aplica a muchos otros problemas de integración de API de terceros y de infraestructura.
- Tenga en cuenta diferentes puntos de vista. La primavera se trata de flexibilidad y de no tener un enfoque fijo sobre cómo se deben hacer las cosas. Ofrece soluciones para una amplia gama de necesidades de aplicaciones con diferentes visiones.
- Admite un alto nivel de compatibilidad con versiones anteriores. La evolución de Spring ha sido cuidadosamente diseñada para dar cabida a varios cambios significativos entre versiones. Spring admite un conjunto cuidadosamente seleccionado de versiones JDK y bibliotecas de terceros para facilitar el mantenimiento de aplicaciones y bibliotecas que dependen de Spring.
- Preocupación por el diseño de API. El equipo de Spring dedica mucho tiempo y esfuerzo a crear API intuitivas que siguen siendo funcionales en múltiples versiones y durante muchos años.
- Altos estándares de calidad de código. Spring Framework pone un fuerte énfasis en un javadoc significativo, actualizado y preciso. Este es uno de los pocos proyectos que puede presumir de una estructura de código limpia sin dependencias circulares entre paquetes.
Comentarios y contribuciones al desarrollo
Para encontrar respuestas a preguntas prácticas, diagnóstico o depuración, sugerimos utilizar Stack Overflow. Haga clic en aquípara obtener una lista de etiquetas sugeridas para usar en Stack Overflow. Si está absolutamente seguro de que hay un problema en Spring Framework o desea sugerir una característica, utilice Problemas de GitHub.
Si tiene una solución o una solución sugerida en mente, puede enviar una solicitud de extracción a Github. Sin embargo, tenga en cuenta que para todos los problemas, excepto los más triviales, esperamos que la solicitud se envíe al rastreador de problemas, donde se llevan a cabo las discusiones y se deja un registro para referencia futura
Para obtener más detalles, consulte la pautas en la página del proyecto de nivel superior "CONTRIBUCIÓN AL DESARROLLO".
Primeros pasos
Si recién está comenzando con Spring, puede comenzar a usar Spring Framework creando una aplicación basada en Spring Boot. El proyecto Spring Boot ofrece una forma rápida (y codificada) de crear una aplicación Spring lista para producción. Se basa en Spring Framework, prefiere la convención a la configuración y está diseñado para que pueda comenzar a funcionar lo más rápido posible.
Puede usar start.spring.io para crear un proyecto básico o seguir una de las guías en "Introducción", por ejemplo "Introducción a la creación de un servicio web RESTful". Además de ser más fáciles de digerir, estos tutoriales son muy específicos de tareas y la mayoría de ellos se basan en Spring Boot. También cubren otros proyectos del portafolio de Spring que quizás quieras considerar al resolver un problema específico.
GO TO FULL VERSION