Spring Framework - Descripción general
Spring es el marco de desarrollo de aplicaciones más popular para Java empresarial. Millones de desarrolladores de todo el mundo utilizan Spring Framework para crear código de alto rendimiento, fácilmente comprobable y reutilizable.
Spring Framework es una plataforma Java de código abierto. Inicialmente fue escrito por Rod Johnson y se lanzó por primera vez bajo la licencia Apache 2.0 en junio de 2003.
Spring es ligero en cuanto a tamaño y transparencia. La versión básica del marco Spring es de alrededor de 2 MB.
Las características principales de Spring Framework se pueden utilizar para desarrollar cualquier aplicación Java, pero existen extensiones para crear aplicaciones web sobre la plataforma Java EE. Spring Framework tiene como objetivo facilitar el uso del desarrollo J2EE y promueve las buenas prácticas de programación al permitir un modelo de programación basado en POJO.
Beneficios de usar Spring Framework
A continuación se muestra la lista de algunos de los grandes beneficios de usar Spring Framework:
Spring permite a los desarrolladores desarrollar aplicaciones de clase empresarial utilizando POJO. El beneficio de usar solo POJO es que no necesita un producto contenedor EJB como un servidor de aplicaciones, pero tiene la opción de usar solo un contenedor de servlets robusto como Tomcat o algún producto comercial.
La primavera se organiza de forma modular. Aunque la cantidad de paquetes y clases es considerable, debe preocuparse solo por los que necesita e ignorar el resto.
Spring no reinventa la rueda, sino que realmente hace uso de algunas de las tecnologías existentes, como varios marcos ORM, marcos de registro, temporizadores JEE, Quartz y JDK y otras tecnologías de visualización.
Probar una aplicación escrita con Spring es simple porque el código dependiente del entorno se mueve a este marco. Además, al usar JavaBeanstyle POJO, se vuelve más fácil usar la inyección de dependencia para inyectar datos de prueba.
El marco web de Spring es un marco MVC web bien diseñado, que proporciona una gran alternativa a los marcos web como Struts u otros marcos web menos populares o sobre-diseñados.
Spring proporciona una API conveniente para traducir excepciones específicas de tecnología (lanzadas por JDBC, Hibernate o JDO, por ejemplo) en excepciones consistentes y no verificadas.
Los contenedores IoC livianos tienden a ser livianos, especialmente en comparación con los contenedores EJB, por ejemplo. Esto es beneficioso para desarrollar e implementar aplicaciones en equipos con memoria y recursos de CPU limitados.
Spring proporciona una interfaz de administración de transacciones consistente que puede escalar a una transacción local (usando una sola base de datos, por ejemplo) y escalar a transacciones globales (usando JTA, por ejemplo).
Inyección de dependencia (DI)
La tecnología con la que Spring se identifica más es la Dependency Injection (DI)sabor de Inversión de Control. losInversion of Control (IoC)es un concepto general y se puede expresar de muchas formas diferentes. La inyección de dependencia es simplemente un ejemplo concreto de inversión de control.
Al escribir una aplicación Java compleja, las clases de aplicación deben ser lo más independientes posible de otras clases de Java para aumentar la posibilidad de reutilizar estas clases y probarlas independientemente de otras clases durante las pruebas unitarias. Dependency Injection ayuda a unir estas clases y al mismo tiempo a mantenerlas independientes.
¿Qué es exactamente la inyección de dependencia? Veamos estas dos palabras por separado. Aquí, la parte de dependencia se traduce en una asociación entre dos clases. Por ejemplo, la clase A depende de la clase B. Ahora, veamos la segunda parte, inyección. Todo esto significa que la clase B será inyectada en la clase A por el IoC.
La inyección de dependencia puede ocurrir en la forma de pasar parámetros al constructor o después de la construcción usando métodos setter. Como la inyección de dependencia es el corazón de Spring Framework, explicaremos este concepto en un capítulo separado con ejemplos relevantes.
Programación orientada a aspectos (AOP)
Uno de los componentes clave de Spring es el Aspect Oriented Programming (AOP)marco de referencia. Las funciones que abarcan varios puntos de una aplicación se denominancross-cutting concernsy estas preocupaciones transversales están conceptualmente separadas de la lógica empresarial de la aplicación. Hay varios buenos ejemplos comunes de aspectos que incluyen registro, transacciones declarativas, seguridad, almacenamiento en caché, etc.
La unidad clave de modularidad en OOP es la clase, mientras que en AOP la unidad de modularidad es el aspecto. DI lo ayuda a desacoplar los objetos de su aplicación entre sí, mientras que AOP lo ayuda a desacoplar las preocupaciones transversales de los objetos a los que afectan.
El módulo AOP de Spring Framework proporciona una implementación de programación orientada a aspectos que le permite definir interceptores de métodos y cortes de puntos para desacoplar claramente el código que implementa la funcionalidad que debe separarse. Discutiremos más sobre los conceptos de Spring AOP en un capítulo separado.