sábado, 15 de julio de 2017

Spring Framework



He estado fuera mucho tiempo, así que pensé para volver a escribir por acá; ¿con qué tema empezaré? Entonces tomé la decisión de hablar sobre uno de los frameworks mas populares en cuanto a Java se refiere. En esta primer entrada, definiré los conceptos de Spring, e iré abordando sobre los puntos específicos que se requieren para efectuar una aplicación sencilla que pueda ser funcional.

Sin mas, definamos: Spring es un framework para el desarrollo de aplicaciones y contenedor de inversión de control, de código abierto para la plataforma Java 2​.

Eso del "inversor de control" se refiere a la filosofía "no nos llames, nosotros te llamamos", y se refiere a que es Spring quien tiene el control de la aplicación, no los componentes.

Spring Framework comprende diversos módulos que proveen un rango de servicios:

  • Contenedor de inversión de control: permite la configuración de los componentes de aplicación y la administración del ciclo de vida de los objetos Java, se lleva a cabo principalmente a través de la inyección de dependencias.
  • Programación orientada a aspectos: habilita la implementación de rutinas transversales.
  • Acceso a datos: se trabaja con RDBMS en la plataforma java, usando Java Database Connectivity y herramientas de Mapeo objeto relacional con bases de datos NoSQL.
  • Gestión de transacciones: unifica distintas APIs de gestión y coordina las transacciones para los objetos Java.
  • Modelo vista controlador: Un framework basado en HTTP y servlets, que provee herramientas para la extensión y personalización de aplicaciones web y servicios web REST.
  • Framework de acceso remoto: Permite la importación y exportación estilo RPC, de objetos Java a través de redes que soporten RMI, CORBA y protocolos basados en HTTP incluyendo servicios web (SOAP).
  • Convención sobre Configuración: el módulo Spring Roo ofrece una solución rápida para el desarrollo de aplicaciones basadas en Spring Framework, privilegiando la simplicidad sin perder flexibilidad.
  • Procesamiento por lotes: un framework para procesamiento de mucho volumen que como características incluye funciones de registro/trazado, manejo de transacciones, estadísticas de procesamiento de tareas, reinicio de tareas, y manejo de recursos.
  • Autenticación y Autorización: procesos de seguridad configurables que soportan un rango de estándares, protocolos, herramientas y prácticas a través del subproyecto Spring Security (antiguamente Acegi).
  • Administración Remota: Configuración de visibilidad y gestión de objetos Java para la configuración local o remota vía JMX. 
  • Mensajes: Registro configurable de objetos receptores de mensajes, para el consumo transparente desde la a través de JMS, una mejora del envío de mensajes sobre las API JMS estándar.
  • Testing: Soporte de clases para desarrollo de unidades de prueba e integración.

A pesar de que tomé estas definiciones de la wikipedia, es mas cierto que las tomé de base e hice un mini-resumen de la parte que en verdad es importante.

Les dejo un enlace con un tutorial de MitoCode muy bueno sobre conceptos y definiciones. Ya que posteriormente estaré subiendo contenido de configuraciones.



Espero te sea de utilidad ;)