Spring FrameworkDespués de varios meses de trabajo ya está disponible Spring Framework 3.0 GA, la nueva versión del popular framework de aplicaciones para Java. Esta nueva versión aprovecha características de Java EE 6 (por ejemplo, usando GlassFish v3) y soporta JPA 2.0 (por ejemplo, usando EclipseLink 2.0). También se incluye soporte para la nueva anotación @ManagedBean (JSR-250) para escanear componentes, que complementa el soporte para la anotacion @Inject (JSR-330) para inyección de dependencias a través de anotaciones.

Veamos un reumen de las características más imporantes de Spring 3.0.

Lo nuevo en Spring Framework 3.0

  • Lenguaje de expresiones de Spring (SpEL): un parse de expresiones para usar en las definiciones de los beans, permitiendo referenciar a estructuras anidadas de beans (por ejemplo, propiedades de otros beans), y también a estructuras de datos del entorno (por ejemplo, propiedades del sistema) usando la sintásis #{...} en la propiedad de valor de los beans.
  • Soporte extendido para componentes basados en anotaciones: se agrega el concepto de clases de configuración y métodos de factoria anotados (como se usaban en Spring JavaConfig). Spring también permite inyectar valores de configuración usando la expresión @Value, haciendo referencia a valores de configuración a través de #{...} (dinámico) o ${...} (estático).
  • Modelo de estereotipos: permite crear anotaciones de "atajo" a través de meta-anotaciones. Por ejemplo, para establecer alcances predeterminados y características de transacción predeterminadas en estereotipos personalizados. Imaginen la anotación personalizada @MiServicio que indica @Service, @Scope("request") y @Transactional(readOnly=true) usando una única anotación.
  • Anotaciones estándar para inyección de dependencias. Spring 3.0 viene con soporte completo para la especificación JSR-330 de Inyección de Dependencias en Java: inyección de dependencias con anotaciones usando @Inject y su calificador asociado proveedor de modelo, como alternativa a la anotación @Autowired propia de Spring.
  • Modelo de valicaciones declarativo basado en anotaciones de restricciones: Configuración al estilo de Spring de un proveedor JSR-303 Bean Validation (como ser Hibernate Validator 4.0).
  • Soporte mejorado para REST: soporte nativo para REST en Spring MVC, como mapeos de request estilo REST, extracción variable de URI a través de paráemtros @PathVariable, y resolución de vistas según la negociación del contenido. El soporte del lado del cliente para REST está disponible en la clase RestTemplate.
  • Soporte nativo para Portlet 2.0: Sprint MVC soporta por completo los entornos Porltet 2.0 y el nuevo modelo de eventos y petición de recursos de Portlet 2.0. Se incluye facilidades especializadas de mapeos para las características típicas de los portlets: @ActionMapping, @RenderMapping, @ResourceMapping, @EventMapping.
  • Mapeo Objeto/XML (OXM): incluido ya en Spring Web Services, ahora forma parte del núcleo de Spring Framework. Abstracciones de Marshalling y Unmarshalling con soporte para JAXB2, Castor, etc. Viene con opción de integración para payloads XML en Spring MVC y Spring JMS.
  • Capacidades de scheduling: hay un nuevo mecanismo de TaskScheduler y Trigger con soporte estilo cron. Spring 3.0 viene con un namespace para tareas, y también soporta las anotaciones @Async y @Scheduled. Esto se puede ejecutar en pools de hilos nativos o gestionados por un servidor.

Spring 3.0 funciona en la mayoría de los entornos. Debido a varios arreglos internos, Spring 3.0 funciona con Java SE 5 y superior y Servlet 2.4 y superior (por ejemplo, Tomcat 5.x y 6.x)  y también mantiene compatibilidad con servidores corporativos como WebSphere 6.1 y WebLogic 9.2 (que formalmente están basados en J2EE 1.4). A la vez, ya está listo el soporte para GlassFish v3.

Como consecuencia, Spring 3 permite usar características nuevas para el modelo de componentes, y también cumple estándares como la inyección JSR-330 y la validación JSR-303, en entornos productivos ya establecidos - sin tener que actualizar la instalación del servidor! Lo único necesario es actualizar las librerías de la aplicación para que usen Spring 3.0.

Más novedades y detalles

No se pierdan de repasar todas las novedades y detalles de Spring Framework 3.0, que incluye ejemplos de código y explicaciones.

Basado en Spring Framework 3.0 goes GA.

Inspiración.

"Si tú tienes una manzana y yo tengo una manzana e intercambiamos las manzanas, entonces tanto tú como yo seguiremos teniendo una manzana cada uno. Pero si tú tienes una idea y yo tengo una idea, e intercambiamos las ideas, entonces ambos tendremos dos ideas"

Bernard Shaw