feed

Spring Framework

Voy a empezar una serie de artículos sobre uno de los frameworks mas populares en J2EE como es Spring Framework. En este primer artículo comentaré lo que es Spring y porque ha tenido tanto éxito.

En el manual de referencia dice: “Spring Framework is a Java platform that provides comprehensive infrastructure support for developing Java applications. Spring handles the infrastructure so you can focus on your application.” Traducido, Spring Framework es una plataforma que nos proporciona una infrastuctura que actúa de soporte para desarrollar aplicaciones Java. Spring maneja toda la infrastructura y así te puedes centrar en tu aplicación. Diciendolo mas coloquialmente, Spring es el “pegamento” que une todos los componentes de la aplicación, maneja su ciclo de vida y la interacción entre ellos.

Spring Framework es un contenedor ligero (“lightweight container”) en contraposición a un un servidor de aplicaciones J2EE. En el caso de una aplicación web, te basta con un contenedor de servlets como Tomcat o Jetty. Pero Spring no solo se puede usar para crear aplicaciones web, se podría usar para cualquier aplicacion java, aunque su uso habitual sea en entornos web, nada te impide utilizarlo para cualquier tipo de aplicación.

¿Porque surgió Spring Framework?

En los inicios de las aplicaciones J2EE, EJB era muy complejo y tedioso, tanto la version 1 como la 2. Yo tengo la suerte de haber trabajado con EJB a partir de la versión 3, pero otros no corrieron la misma suerte, y trabajaron con versiones anteriores. No puedo profundizar mucho, por mi desconocimiento de esas versiones, pero todos los que han trabajado con ellas, comentan que era un infierno. Pero para eso estaba el amigo Rod, para venir al rescate…

La primera versión de Spring se lanzó en junio de 2003, aunque el gran lanzamiento se hizo en Marzo de 2004, con la versión 1.0. Meses mas tarde, en concreto el 21 de Junio de 2004, Rod Johnson, creador de Spring, publicó el libro: “J2EE development without EJB“. Recomiendo encarecidamente su lectura, te hace comprender los motivos por los que diseñar Spring. Lo que mas me gustó del libro, es comprobar como algo complicado lo implementa de manera tan sencilla y elegante.

Yo llevo trabajando con Spring desde septiembre de 2005 y ya no puedo vivir sin él. Hoy en día Spring ha crecido mucho, si hacéis una busqueda en cualquier portal de empleo, vereis que tiene mucha demanda. Incluso ya no es exclusivo de Java, pues ya hay versión para .NET, bautizada como Spring.NET.

Inversión de control e inyeccción de dependencias

Abreviado del ingles IoC y DI respectivamente. Hoy en día ya no se usa practicamente el primer término, sino el segundo. Cuando tu diseñas una aplicación en Java dispones de muchos objetos que se relacionan entre sí mediante composición. Para enlazar dos objetos tendrías que inyectarle a uno de ellos una instancia del otro. Esto lo realiza Spring por tí, por eso se llama Inversión de control, porque es spring quien se encarga de estas dependencias, instancia los objectos y los inyecta por reflexión. A grandes rasgos, declaras en un XML los componentes de tu aplicación y sus dependencias. Spring lee este XML, llamado Application Context, crea los componentes y sus relaciones entre ellos. Las últimas versiones de Spring, ya permiten anotaciones, y se puede anotar una propiedad en una clase mediante @Autowired para que Spring busque la clase correspondiente, la instancie y la inyecte, ahorrandonos bastante código XML.

La “Dependency injection”, ya no es un concepto propio de Spring, otros frameworks lo copiaron. Desde la version 6 de J2EE existe la anotacion @Inject para hacer exactamente lo mismo. Otro menos conocido, como Guice, de Google, tambien lo he utilizado en un proyecto.

Módulos

Spring es bastante grande, por ello el proyecto esta dividido en módulos. No siempre se utiliza en un proyecto todo lo que tiene spring. Por poner un ejemplo, podrías utilizar Struts para la parte web, en vez de Spring MVC. Si utilizas un framework de persistencia, como Hibernate o iBatis, tendrías que incluir spring-orm en tu classpath.

Spring tiene unos 20 módulos:

Yo recomiendo usar Maven para desarrollar en Java. Todos los artefactos de Spring se encuentran en el repositorio central y te olvidas de las dependencias entre ellos. Imagina que quieres usar solo el módulo Spring MVC pero no sabes que dependencias tiene, ya tienes que mirar documentación y meter manualmente los jar que necesitas en tu classpath. Con Maven especificas que quieres usar spring-mvc y te olvidas:

<dependencies> <dependency> <groupid>org.springframework</groupid> <artifactid>spring-mvc</artifactid> <version>3.0.0.RELEASE</version> <scope>runtime</scope> </dependency> </dependencies>

Maven será también objeto de varios artículos en un futuro no muy lejano.

Conclusión

He querido dar una breve introducción de Spring. En próximos episodios, crearé una aplicación que iré desarrollando a lo largo de esta serie.

Mas información | Springsource.org | Manual de referencia de Spring 3.1.0

Muchas veces me encuentro con desarrolladores que vienen de otras plataformas y desean aprender Java debido a las amplias posibilidades que el mercado laboral tiene. Mas pronto que tarde se ven en la imperiosa necesidad de aprender Spring Framework. Sin embargo muchos de los conceptos que Spring aporta no son conceptos elementales y cuesta aclarar las ideas y hacerse una composición de lugar. ¿Qué es exactamente Spring Framework?.

El universo de los Frameworks

Normalmente cuando nosotros...

Leer más »

Noticia interesante para todos los interesados en el desarrollo Java, los proyectos open source, los sistemas de control de versiones o los repositorios de código la que se ha anunciado esta semana: el popular framework para desarrollo Java Spring Framework ha empezado a utilizar Git como sistema de control de versiones y el cada vez más on fire GitHub como repositorio de código. No es el primer...

Leer más »

El equipo de SpringSource ha anunciado finalmente la disponibilidad total y estable de la nueva versión de Spring Framework 3.1. Una substancial actualización que promete varias características claves que marcarán el desarrollo java con este framework en entornos empresariales.

Hay que remarcar que esta release de Spring es la primera que incluye soporte total a Java 7 . Habrá que ver si los...

Leer más »

addEventListener('load', function (event) { prettyPrint() }, false);

En esta tercera parte de mi serie sobre Spring, vamos a continuar con el patrón DAO.

En el capítulo anterior, sentábamos la base sobre la que se contruirá toda nuestra capa DAO. En este capítulo, crearemos una base de datos muy simple, con una sola tabla, y crearemos su entidad de Hibernate correspondiente y su DAO.

También...

Leer más »

La primera release candidate de Spring 3.1 está ya disponible. Se puede usar desde el repositorio de milestones de SpringSource, o descargándolo directamente de la página de descargas de la comunidad spring.

Esta versión corrige 77 bugs , implementa 16 nuevas características y 66 mejoras. Incluye novedades como:

  • Soporte para Hibernate 4.0 (en concreto 4.0.CR4)
  • Soporte para Quartz 2.0
  • Soporte
...
Leer más »

addEventListener('load', function (event) { prettyPrint() }, false);

Se que muchos estáis esperando la serie de Spring, aquí la tenéis. En esta segunda parte, voy a hablaros de el patrón de diseño DAO. DAO es un acrónimo de Data Access Object. No es algo que haya inventado Spring, pertenece al catálogo de Core J2EE Patterns.

En esta serie voy a ir construyendo una aplicació n con Spring Framework....

Leer más »

Los chicos de SpringSource esta vez han sido rápidos y han lanzado la última versión de su Spring Tool Suite basada en Eclipse Indigo.

Recordemos que la instalación por defecto soporta Eclipse Indigo, aunque aún se mantiene el soporte para Helios usando el update site correspondiente. Ya no soporta Eclipse Galileo. Además esta versión de STS 2.7 viene con la última versión estable de Mylin.

...
Leer más »

Voy a empezar una serie de artículos sobre uno de los frameworks mas populares en J2EE como es Spring Framework. En este primer artículo comentaré lo que es Spring y porque ha tenido tanto éxito.

En el manual de referencia dice: “ Spring Framework is a Java platform that provides comprehensive infrastructure support for developing Java applications. Spring handles the infrastructure so you can...

Leer más »

Sigue a Genbetadev