Buscar
Social
Ofertas laborales ES
« Nueva quedada del Bluemix Madrid Meetup | Main | Gradle »
jueves
jun112015

Spring 4: Nuevas características.

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.
  • Todas las anotaciones dentro del módulo de spring-test (por ejemplo, @ContextConfiguration, @WebAppConfiguration, @ContextHierarchy, @ActiveProfiels, etc), pueden ser usados ahora como meta-anotaciones para crear anotaciones compuesta y reducir la diplicación de configuración dentro de una onjunto de tests.
  • La definición de perfiles de beans activos pueden ser resueltos de manera programática, simplemente implementando un ActiveProfileResolver personalizado y registrándolo a través del atributo de @ActiveProfiles.
  • Una nueva clase llamada SocketUtils puede ser introducida dentro del módulo principal de spring-core, y permite escanera los puertos TCP y UDP dentro de localhost. Esta funcionalidad es no específica para testear, pero puede ser muy útil cuando se escriben test de integración que requieren el uso de sockets, por ejemplo, test que empiezan dentro de
  • A new SocketUtils class has been introduced in the spring-core module which enables you to scan for free TCP and UDP server ports on localhost. This functionality is not specific to testing but can prove very useful when writing integration tests that require the use of sockets, for example tests that start an in-memory SMTP server, FTP server, Servlet container, etc.
  • As of Spring 4.0, the set of mocks in the org.springframework.mock.web package is now based on the Servlet 3.0 API. Furthermore, several of the Servlet API mocks (e.g., MockHttpServletRequest, MockServletContext, etc.) have been updated with minor enhancements and improved configurability.

PrintView Printer Friendly Version

EmailEmail Article to Friend

Reader Comments (2)

Este framework es una pasada. Yo como parte de mis "proyectos Java" lo tengo definido como un standard de facto. Muy pero muy raras veces me he encontrado problemas a los que este ecosistema de Springsource no tenga ya un proyecto como solución. No pierdo mi tiempo en discutir con sus detractores ni en declararlo mejor o peor que algún otro framework de otra plataforma (DJango, Symphony etc), para mi es una herramienta valiosísima y los resultados que me ofrece en mis soluciones me avalan mi opinión, con eso me quedo.

junio 15, 2015 | Unregistered Commenterevdelacruz

Muchas gracias por tu opinión, evdelacruz.

junio 17, 2015 | Registered Commenterjcarmonaloeches

PostPost a New Comment

Enter your information below to add a new comment.

My response is on my own website »
Author Email (optional):
Author URL (optional):
Post:
 
Some HTML allowed: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <code> <em> <i> <strike> <strong>