Spring Framework: Qué es y por qué usarlo

Con todo lo que está sucediendo en 2019 pocos pueden negar que desarrollar software ya poco o nada tiene que ver con lo que se venía haciendo hace tan solo unos pocos años atrás. Así cada año el mundo del software vive su propia revolución, en donde Java tiene una posición protagonista, y debido al aumento de la complejidad que presentan la mayoría de los desarrollos es necesario implementar herramientas que ayuden a los desarrolladores con el fin de facilitar su trabajo evitando en lo posible el tener que repetir código o desarrollar nuevas implementaciones desde cero.

Java, es un lenguaje de programación orientado a objetos (POO), que es usado por miles de millones de dispositivos, desde computadoras hasta parquímetros, pero hoy en día, uno de sus mayores usos es para el creciente mundo de la web.

Si eres desarrollador Java ya sabes de lo que hablo y lo útil que resulta trabajar con el Framework adecuado en cada momento. El más popular y extendido dentro del desarrollo de aplicaciones web es Spring. Seguramente habrás escuchado hablar de él al menos una vez - y si no, tarde o temprano lo harás-, y esto se debe a que es una herramienta de uso diario en el área del desarrollo web y cómo Framework está presente en prácticamente en todas las ofertas de empleo. Sus beneficios y puntos fuerte lo hacen en una herramienta de recomendable conocimiento para cualquier profesional.

 

Spring Framework

La historia de Spring es parecida a muchas otras. En 2003 es presentado por primera vez de la mano de Rod Johnson, quien fuera su principal desarrollador, bajo una licencia basada en Apache 2.0. La idea principal es que Spring sirviera como una plataforma para desarrollar en Java de código abierto y gracias a esto su uso comenzó a extenderse hasta convertirse en el framework más popular para Java en un ámbito empresarial, para crear código de alto rendimiento, liviano y reutilizable. Ya que su finalidad es estandarizar, agilizar, manejar y resolver los problemas que puedan ir surgiendo en el trayecto de la programación. Su éxito se fundamenta en la constante labor de investigación e innovación que realiza su equipo de desarrollo.

Spring se basa en la filosofía “convención sobre configuración”, reduciendo al mínimo el número de pasos que un desarrollador debe dar en la configuración inicial del proyecto antes de ponerse a trabajar en la parte dura del proyecto centrando sus esfuerzos en lo importante. La idea es clara: no perder el tiempo (y el dinero) en hacer las mismas cosas una y otra vez.

Spring se puede considerar como el padre de los frameworks Java, ya que da soporte a varios frameworks como: Hibernate, Struts, Tapestry, EJB, JSF, entre otros.

Dentro del paquete estándar de Spring Framework podemos encontrar el siguiente conjunto de módulos, con el siguiente esquema general.

 

Características:

Resulta imposible hablar de un Framework sin enumerar sus características. En el caso de Spring podemos encontrar las siguientes que ofrecen una cantidad considerable de servicios:

  • Tecnologías: Spring es completamente modular y soporta diferentes tecnologías como la inyección de dependencias, eventos, recursos, i18n, validación, enlace de datos, conversión de tipo, SpEL.
  • Acceso a datos: soporte DAO, JDBC, ORM, Marshalling XML.
  • Gestión de transacciones.
  • Integración: comunicación remota, JMS, JCA, JMX, correo electrónico, tareas, programación, caché.
  • Pruebas (Testing): simulacro de objetos, el framework TestContext, Spring MVC prueba, WebTestClient.
  • Programación orientada a aspectos (AOP): permite la implementación de rutinas transversales.
  • Facilita en gran medida la programación basada en MVC (Modelo Vista Controlador) y una implementación rápida basada en Inyección de Dependencias (Dependency Injection).
  • Es un Framework que tiene un especial foco sobre la Seguridad.
  • Compatible con Frameworks web: Spring WebFlux y Spring MVC.
  • Permite el procesamiento de datos por lotes.
  • Administración Remota: a través de este módulo se puede configurar la visibilidad y gestión de los objetos Java para la configuración local o remota vía JMX.
  • Es un framework liviano debido a su implementación POJO (Plain Old Java Object), Spring Framework no obliga al programador a heredar ninguna clase ni a implementar ninguna interfaz.

 

Beneficios de utilizar Spring Framework

Si bien las características de Spring son comunes a la mayoría de los Framework actuales siempre surge la pregunta sobre cuáles son los beneficios de utilizar Spring frente otras alternativas. Quizá la más significativa se encuentra en su propio diseño modular. Esto hace que a pesar de la cantidad de paquetes y clases que tiene podemos ocuparnos de aquello que necesitamos ignorando el resto.

Esto hace también que testear nuestra aplicación escrita con Spring sea un proceso simple. Nuestro código dependiente se traslada a este framework de modo transparente al usuario y mediante el uso de “JavaBeanStyle” la inyección de dependencias para pruebas se puede realizar de una manera sencilla mediante la introducción de datos dummies o mocks.

Por supuesto, como decía, Spring es un framework basado en MVC para web muy bien diseñado que proporciona estabilidad a nuestro código pero quizá su punto fuerte es que proporciona una API para traducir excepciones específicas de la tecnología (como por ejemplo las generadas por JDBC, Hibernate o JDO) en excepciones consistentes y no verificadas. Pero además Spring proporciona una interfaz de gestión de transacciones coherente que puede reducirse a una transacción local (utilizando una única base de datos) y ampliarse a transacciones globales.

En lo personal también destacaría la posibilidad de usar plantillas para diversas tecnologías entre la cuales podemos destacar las siguientes: JDBC, Hibernate y JPA, de forma tal que no hay necesidad de escribir un código extenso, ya que con estas plantillas simplifica el trabajo en cuanto a los pasos básicos a implementar de estas tecnologías. Por lo que desarrollar una aplicación resulta en una tarea bastante llevadera en comparación a si lo hacemos con otras alternativas.

Por si esto fuera poco, ya por último, Spring cuenta con una gran comunidad muy activa que genera una ingente cantidad de documentación lo que facilita y mucho nuestra curva de aprendizaje o resolución de dudas. Especialmente si te estás iniciando en este framework o si estás realizando una migración de tu proyecto. Todo esto lo convierte en una opción a tener en cuenta, si no lo has hecho ya, para un desarrollo de software saludable y eficiente. ¿Necesitas más razones?

 

Guía de Posibilidades Profesionales en el Ecosistema de Java