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.