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 ;)