Prueba

Solo disponible en BuenasTareas
  • Páginas : 9 (2228 palabras )
  • Descarga(s) : 0
  • Publicado : 22 de noviembre de 2010
Leer documento completo
Vista previa del texto
Actualizando de Spring 2.5 a 3.0

Posted Enero 18th, 2010 by ezamudio
in

Java Standard Edition
Java Enterprise

Recientemente actualicé una aplicación que utiliza Spring 2.5, para que utilice Spring 3.0 y quiero compartir algunos detalles de esta experiencia. No quiero decir que esta es la manera de actualizar pero pues espero le sirva a alguien y si hay mejores maneras también laspuedan poner aquí como comentarios.

Primero que nada, quiero mencionar que los proyectos que actualicé no utilizan Maven ni Ivy ni nada por el estilo; de ahí la complejidad y la mención en mi blog; si fuera con Maven sería más sencillo y no habría tanto problema.

El primer cambio que noté con Spring 3.0 es que ya no existe un JAR grande (como era spring-2.5.6.jar por ejemplo) sino que ahora hayvarios JARs, uno por módulo, y la nomenclatura se complicó un poco, por ejemplo org.springframework.core-3.0.0.RELEASE.jar.

La aplicación que actualicé consiste en varias decenas de proyectos de Eclipse, la mayoría módulos de un proyecto central, el cual contiene el spring-2.5.6.jar. Así que lo que hice fue quitar el JAR y dar Refresh al proyecto, lo cual causó que salieran un montón de erroresde compilación en todos los proyectos por el JAR faltante y que ya no se encontraban varias clases.

Lo que siguió fue empezar a agregar, uno por uno, los módulos que vayan siendo necesarios. En el caso de esta aplicación, utilizamos ApplicationContext para conectar y configurar todos los componentes, además de los módulos de JDBC para interacción con base de datos, algo de transaccionalidad(con anotación @Transactional además de usar directamente un PlatformTransactionManager en algunos casos), el JavaMailSender y algunos post-procesadores propios de la aplicación para simplificar un poco la configuración via XML. No se usa un ORM como Hibernate y se trata de una aplicación JavaSE así que son todos los módulos, de modo que incluí los módulos core, context, context-support, jdbc, beansy transaction.

Tuve que modificar el classpath de cada proyecto, eliminando la referencia a spring-2.5.6.jar y agregando referencias a los 6 jars de Spring 3 que necesito. Con eso fueron desapareciendo todos los errores de referencias faltantes, clases faltantes, etc y finalmente todos los proyectos compilaron bien.

Esto resultó en un montón de warnings, principalmente de métodos marcadoscomo deprecated y algunas clases o interfaces también. Algunos que me saltaron fue ParameterizedRowMapper, que ahora se sustituye por RowMapper (que ya es genérico). PreparedStatementCallback ya también es genérico.

Así que de inmediato decidí correr la aplicación para ver si faltaba algo. Lo primero que me salió fue un error de un método faltante en SimpleJdbcTemplate, cosa muy rara dado que elmétodo existe en la clase y de hecho mi código que hace referencia a dicho método compiló bien. Resulta que todavía tenía una referencia a Spring 2.5 en otra librería (jAlarms, nada menos) y por eso fue el problema.

Quité la referencia a Spring 2.5 y dejé solamente las de Spring 3.0; con eso ya pasó de ese error pero salieron otros, de cosas faltantes. Esperaba que iban a necesitarse algunosmódulos adicionales en tiempo de ejecución aunque no fueran necesarios para compilar. Haciendo pruebas encontré que necesitaba los módulos expression y asm; ya con eso levantó la aplicación.

Cabe mencionar que algunas librerías externas que hacían referencia a Spring 2.5 funcionaron bien con Spring 3.0, sin necesidad de recompilar nada. Por último y ya solamente por limpieza, modifiqué mis XML delos ApplicationContext para que hagan referencia a los XSD de Spring 3.0 en vez de 2.5 (por ejemplo spring-context-3.0.xsd en vez de spring-context-2.5.xsd).

Esta aplicación empezó con Spring 1.0, luego fue actualizada a 1.2 (algo bastante sencillo), de ahí el cambio a 2.0 fue un poco rudo porque vino acompañado también de cambio a Java 5 (estaba en 1.4). El cambio a Spring 2.5 fue también...
tracking img