Spring 4: Nuevas características.
jueves, junio 11, 2015 at 11:30PM
jcarmonaloeches in Spring 4

1) Mejorada experiencia de comienzo de usuario

Existe una guía cuidada de tipología "Getting Started".

Además, el nuevo sitio web proporciona un vistazo general comprensivo acerca de todos los proyectos que se encuentran bajo el paraguas de Spring.

También existen materiales sobre ficheros POM de Maven acerca de las nuevas versiones que van publicándose de Spring.

2) Mejora de calidad de código.

Se han eliminado los métodos y paquetes depreciados: esto mejora la ligereza de los jar's necesarios, pero también se debe tener cuidado en el caso de que, si se intenta adaptar una versión antigua de Spring a una nueva, es necesario que el código no invoque (que podría) a métodos obsoletos.

3) Soporte a muchas de las características de Java 8.

Se puede hacer uso de expresiones lambda y referencias a métodos dentro de las interfaces callbak de Spring.

Hay soporte para java.time (JSR-310) y muchas anotaciones, como "Repeatable".

También se puede usar el nombre de parámetro de Java 8 como una alternativa para compilar el código con información de debug habilitada.

Aunque Spring mantiene la compatibilidad con versiones anteriores de Java, en concreto Java SE 6 (actualización 18, sacada en Enero de 2010), se recomienda que para nuevos proyectos basados en Spring 4 se haga uso de Java 7 o bien Java 8.

4) Java EE 6 and 7

La versión J2EE 6 o posterior se considera como la línea base de Spring Framework 4, que soporta las especificaciones JPA 2 y Servlet 3.

Para mantener la compatibilidad con Google App Engine y servidores de aplicación antiguos, es posible desplegar una aplicación de Spring 4 dentro de un entorno de Servlet 2.5. Sin embargo, se recomienda el uso de Servlet 3.0 en adelante, además de ser un prerrequisito para las pruebas y los paquetes mock en entornos de desarrollo.

Spring 4 soporta el nivel de Java EE7, particularmente: JMS 2, JTA 1.2, JPA 2.1, Bean Validation 1.1, y utilidades de concurrencia.

Hay que notar que Hibernate 4.3 es un proveedor de JPA y consecuentemente sólo es soportado por Spring Framework 4. Esto mismo aplica para el validador de Hibernate 5.0, que es un proveedor de Bean Validation 1.1.  Ninguno de ellos es soportado por Spring Framework 3.2.

5) Definiciones de Bean Groovy DSL

 Empezando con el framework de Spring 4, es posible definir configuración externa de bean usando Groovy DSL. Esto es un concepto similar al usar definiciones de bean XML, pero permite una sintaxis más concisa. Groovy permite además incrustar definiciones embebidadas de manera sencilla en el código "bootstrap". Por ejemplo:

def reader = new GroovyBeanDefinitionReader(myApplicationContext)
reader.beans {
    dataSource(BasicDataSource) {
        driverClassName = "org.hsqldb.jdbcDriver"
        url = "jdbc:hsqldb:mem:grailsDB"
        username = "sa"
        password = ""
        settings = [mynew:"setting"]
    }
    sessionFactory(SessionFactory) {
        dataSource = dataSource
    }
    myService(MyService) {
        nestedBean = { AnotherBean bean ->
            dataSource = dataSource
        }
    }
}

6) Mejoras dentro del contenedor central

Spring trata los tipos genéricos como una forma de cualificador cuando se inyectan beans. Por ejemplo, cuando usas un repositorio de datos spring puedes fácilmente injectar una implementación específica de la siguiente manera: @Autowired Repository<Customer> customerRepository.

Si utilizadas soporte a las meta-anotaciones de Spring, puedes desarrollar anotaciones específicas que expongan atributos específicos desde la anotación de código.

Los beans pueden ser ordenados cuando se autoinyectan dentro de listas y arrays, para ello existe la anotacion @Order, así como la interfaz Ordered.

La anotación @Lazy puede ser usada para puntos de inyección, de la misma manera que las definiciones de @Beans.

La anotación de @Description se ha introducido para los desarrollador que hacen uso de configuración basada en Java.

Un modelo generalizado de los beans filtrados por condiciones ha sido añadido a través de la anotación @Conditional. Esto es similar al soporte de @Profile, pero permite al usuario definir estrategias para desarrollar de manera programática.

Las clases proxy basadas en CGLIB no necesitan más un constructor por defecto. El soporte se proporciona a través de la librería objenesis, la cual ha sido repaquetada y distribuida como parte del framework Spring. Con esta estrategia, no es necesario invocar instancias de proxy.

Hay un soporte administrado de time zones a través del framework, por ejemplo, LocaleContext.

7) Mejoras generales sobre web

Desplegar en servidores Servlet 2.5 sigue siendo una opción, pero como se comentó, Spring Framework 4 se centra en entornos Servlet 3.0 en adelante. Si estás usando el framework de test Spring MVC, necesitarás asegurar que Servlet 3 está incluido en tu test de classpath.
Además, el soporte de WebSocket mencionado anteriormente, las siguientes mejoras se han hecho a los módules web de Spring.
- Puedes usar la anotación @RestController dentro de aplicaciones Spring MVC, eliminando la necesidad de añadir @ResponseBody para cada uno de tus métodos @RequestMapping.
-La clase AsyncRestTemplate ha sido añadido, perimitiendo soporte asíncrono de no bloqueo cuando se desarrolan clientes REST.
-Spring ahora ofrece soporte timezone comprensivo, cuando se desarrollan aplicaciones Spring MVC.

 

8) WebSocket, SockJS, and STOMP Messaging

Un nuevo módulo de spring - websocket proporciona soporte comprensivo para el webscoket basado en doble comunicación entre cliente y servidor. Es compatible con JSR-356, la API de Java WebSocket, y además proporciona opciones SockJS (por ejemplo, emulación de WebSocket), para ser usado en navegadores que no tienen todavía el soporte del protocolo de WebSocket (por ejemplo, Internet explorer < 10).

Un nuevo módulo de mensajería spring añade soporte para STOMP como el subprotocolo de WebSocket para usar en aplicaciones a través de un modelo de programa de anotaciones para enrutar y procesar mensajería STOMP desde los clientes de WebSocket. Como resultado, un @Controller puede entonces contener métodos tanto de @RequestMaping como @MessageMapping para manejar peticiones HTTP y mensajería desde clientes conectados de WebSocket. El módulo de mensajería de spring además contiene abstracciones de llabes, formalmente, desde el proyecto de Spring Integration con Message, MessageChannel, MassgaHandlet y otros, para servir como una fundación de aplicaciones basadas en mensajería.

Para más detalles, se puede ver el capítulo 21, relativo a soporte a WebSockets.

9) Mejoras de pruebas.
En adición al código depreciado dentro del módulo de test de spring, Spring Framework 4 introduce muchas mejoras para usar dentro de un test de unidad e integración.
Article originally appeared on javaHispano (http://www.javahispano.org/).
See website for complete article licensing information.