viernes, 2 de marzo de 2012

CONFIGURAR SPRING EN PROYECTO MAVEN-GWT


Si tenemos un proyecto GWT-Maven y queremos añadir Spring para que se encargue de la inyección de dependencias hay que seguir los siguiente  pasos:

1º - Tener el proyecto gwt-maven correctamente configurado.

2º - En el POM (fichero de configuración de Maven) hay que añadir:
<dependency>
            <groupId>org.springframeworkgroupId>
            <artifactId>springartifactId>
            <version>2.5.5version>
      dependency>

3º - En el archivo web.xml hay que agregar la variable de contexto “contextConfigLocation”, la cual apunta a los ficheros de configuración.
El listener “ContextLoaderListener”, el cual se encuentra en el framework, se encarga de inicializar el contexto de Spring.
<context-param>
<param-name>contextConfigLocationparam-name>
<param-value>classpath:spring/katagwtmavenspring-ctx.xmlparam-value>
context-param>

<listener>
<listener-class>org.springframework.web.context.ContextLoaderListenerlistener-class>
listener>


4º - Hay que crear el fichero o ficheros de configuración de Spring,  la forma que tiene de trabajar Spring es que al iniciar la aplicación carga en el contexto de Spring todos los beans que están en los ficheros de configuración de Spring. Aunque inicialmente esto hace que el arranque sea más lento luego el rendimiento es más óptimo y el código es más sencillo (ya que las dependencias se configuran en ficheros xml) y a la hora de realizar algún cambio basta con cambiar el archivo de configuración (sin tener que tocar el código).
Por lo tanto, con estos ficheros de configuración lo que se hace es indicar a la aplicación todos los beans, y sus relaciones, que se van a cargar el contexto de Spring.
El primer fichero que se va a mirar es “katagwtmavenspring-ctx.xml”, ya que me lo indica “web.xml”, este fichero se encarga de relacionar los diferentes ficheros de configuración que van a cargar el contexto de Spring. En este caso sería:

<import resource="katagwtmavenspring-ctx-persistence.xml"/>
<import resource="katagwtmavenspring-ctx-service.xml"/>
<import resource="katagwtmavenspring-ctx-control-rpc.xml"/>

Lo que se busca con esta división de los ficheros de configuración de Spring es separar por un criterio los diferentes beans que tiene que se tienen que cargar en el contexto. Esto se podría configurar en un solo fichero.
A la hora de configurar los beans que se van a cargar en el contexto podemos ver tres casos. Por un lado se puede declarar un bean en el que no se le pasa ningún property, esto quiere decir que no depende de otro bean.

<bean id="serviceFactory" class="com.enne.codekata.katagwt.service.factory.SpringCtxBeanFactory" />

Otro caso es un bean al que se le añade “property”, este property puede ser un set o una nueva llamada a otro bean (lo que viene a ser una dependencia y se denota por “ref”)

<bean id="allWorldService" class="com.enne.codekata.katagwt.service.impl.AllWorldServiceImpl" >
<property name="allWorldDAO" ref="allWorldDAO"/>
bean>

El último de los casos que explico es que el bean tenga uno o varios properties con “value” en vez de “ref”, esto ya sería un set y es el valor que se cargaría en el contexto de spring.

Para resumir, a la hora de declarar un bean se le añade todos los properties que sean necesarios, esto si contienen “ref” lo que hace es ir a buscar otro bean con el nombre que se le referencia. Llegará a un bean en el que el property tiene un “value” y ahí es donde se toma el valor que se pondrá en el bean en el contexto de Spring.

Como se puede ver la configuración es muy sencilla, lo que hay que tener claro son los conceptos. El resumen sería, partiendo de un proyecto que funciona al que se le añade Spring:

·         Se configura el archivo “web.xml” y se le indica el contexto que tiene que cargar.
·     Se configura el/los diferente/s archivos de configuración de Spring. En estos archivos se van a incluir todos los beans, y sus relaciones, que tienen que ser cargado en el contexto de Spring.


Espero que esta pequeña entrada pueda servir de ayuda como a mi me ha servido de ayuda otras entradas de los muchos blog que he leído en la red.

No hay comentarios:

Publicar un comentario