Un pasito adelante hacia Spring 3.0

La verdad es que se está haciendo larga la espera de esta versión mayor. En diciembre del año pasado, en Devoxx, se dio a conocer el roadmap de Spring 3.0:

Spring 3.0 Milestones Enero/Febrero 2009
Spring 3.0 Release Candidates Marzo/Abril 2009

Hoy mismo se ha dado a conocer la tercera milestone de Spring 3.0 (Mayo) y la RC1 está anunciada para Junio 09. La demora sigue….y ya hace un año y medio del anuncio de Spring 2.5. Toca esperar…

Pero, que nos espera en esta versión?

  • Spring Expression Language: Un lenguaje de expresiones con sintaxis similar a Unified EL con funcionalidades adicionales como invocaciones de métodos. Se podrá utilizar en configuraciones XML o mediante anotaciones. Un ejemplo:
    <bean class="mycompany.RewardsTestDatabase">
    <property name="databaseName"
            value="#{systemProperties.databaseName}"/>
    <property name="keyGenerator"
            value="#{strategyBean.databaseKeyGenerator}"/>
    </bean>
    
    

    En el caso de las anotaciones:

    @Repository
    public class RewardsTestDatabase {
        @Value("#{systemProperties.databaseName}")
        public void setDatabaseName(String dbName) { ... }
        @Value("#{strategyBean.databaseKeyGenerator}")
        public voidsetKeyGenerator(KeyGenerator kg) { ... }
    }
    
    
  • Metadatos para configuración: Algunas de las funcionalidades de JavaConfig se han incluido en Spring Framework. De esta manera, anotaciones como @Configuration @Bean @Primary @Lazy @Import o @Value, van a ser accesibles directamente. Esto nos va a permitir definir nuestros beans en clases anotadas (podemos decir que un método anotado con @Bean va a registrar un bean en nuestro aplication context del tipo especificado por el valor de retorno teniendo así comportamiento de BeanFactory) . Ejemplo:
    @Configuration
    public class AppConfig {
        @Bean
        public TransferService transferService() {
            return new TransferServiceImpl();
        }
    }
    

    Que va a ser el equivalente a:

    <beans>
        <bean name="transferService" class="com.acme.TransferServiceImpl"/>
    </beans>
    

    Not my style, pero para gustos colores…

  • Soporte extendido para metaanotaciones: anotaciones como @Scope @Transactional  @Service  @Controller puedes ser utilizadas como metaanotaciones lo que nos va a permitir crear nuestras anotaciones con estos comportamientos. Ejemplo:
    @Service
    @Scope("request")
    @Transactional(rollbackFor=Exception.class)
    @Retention(RetentionPolicy.RUNTIME)
    public @interface MiServicio {
    }
    
    @MiServicio
    public class RewardsService {…}
    
  • OXM: El soporte para marshalling/unmarshalling de XML usando OXMs que se encontraba en Spring Web Services, pasa a ser parte de Spring Framework.
  • Soporte para REST: sin duda la mejor funcionalidad significativa en esta versión. Extiende Spring @MVC para soportar aplicaciones RESTful. En el caso de tener una URL con patrón http://www.example.com/owners/{ownerId}, podremos definir:
    @RequestMapping("/owners/{ownerId}", method=RequestMethod.GET)
    public String findOwner(@PathVariable String ownerId, Model model) {
      Owner owner = ownerService.findOwner(ownerId);
      model.addAttribute("owner", owner);
      return "displayOwner";
    }
    
  • Más anotaciones para Spring @MVC: Se han añadido @CookieValue y @RequestHeaders a la lista.
  • Abstracción para TaskScheduler: Spring provee ahora una facade scheduling API. En la próxima RC van a incorporar un namespace para scheduling.
  • Y cosas pendientes: Hibernate Validator, JEE 6 (JSF 2, JPA2…).

En los próximos días estaré enredando un poco con las nuevas funcionalidades…

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s