domingo, octubre 16, 2005

Spring XBean

Un interesante proyecto que apareció últimamente en la web (via Spring-Loaded) es XBean.
Este proyecto nos permite "modificar" las etiquetas XML del fichero de configuración de Spring para poder escribir:

<configuracion url="http://www.myurl.com"
xmlns="http://example.com/schemas/config">
<myDao><dao/></myDao>
<roles>
<rol key="admin"/>
<rol key="user"/>
</roles>
<configuracion>

en lugar de:

<bean id="configuracion" class="mypackage.Configuracion">
<property name="url" value="http://www.myurl.com"/>
<property name="dao" ref="dao"/>
<property name="roles">
<list>
<value>
<bean class="mypackage.Rol">
<property key="admin"/>
</bean>
</value>
<value>
<bean class="mypackage.Rol">
<property key="user"/>
</bean>
</value>
</list>
</property>
</bean>
<bean id="dao" class="mypackage.ConfiguracionDAO"/>

Aunque parezca que estamos "desnaturalizando" la definición del xml de configuración de Spring, en muchos casos esto es mas que útil. Por ejemplo, cuando queremos que el usuario final tenga acceso a configurar parte de la aplicación. Es mucho mas sencillo en ese caso que se aprendan una sintaxis "especial", que la sintaxis Spring. Además de mantener el tamaño de los ficheros en algo mas razonable.

Para poder hacer esta "magia", debemos agregar los jars de XBean al proyecto, generar un fichero en el classpath con los alias y utilizar ClassPathXmlApplicationContext (o sus similares) del package org.xbean.spring.context en lugar de los normales de Spring.

El fichero de alias deberá estar bajo "META-INF/services/org/xbean/spring/", y llamarse igual que la url que hayamos elegido para el XML namespace. En este ejemplo el path completo sería META-INF/services/org/xbean/spring/http/example.com/schemas/config, y el fichero config debería contener:

configuracion=mypackage.Configuracion
configuracion.myDao=dao
dao=mypackage.ConfiguracionDAO
rol=mypackage.Rol

e incluso podríamos ahorrarnos algunos alias si nuestras propiedades se llaman igual que nuestras etiquetas y agregamos

mypackage=package

en el fichero.

3 comentarios:

ocanalejo dijo...

Niko, supongo que ya conocerás lo que te vengo a enseñar, pero por si acaso:

mira esto

Un abrazo tío.

Anónimo dijo...

Hola Niko:
No se como ponerme en contacto contigo ya que no encuentro email.

No nos conocemos pero ando buscando una empresa/persona que pueda realizarnos una desarrollo/formacion en entorno j2ee.

Te ruego que si estas interesado te pongas en contacto conmigo.

albertogallen@estudioceramico.es

gracias

Unknown dijo...

Me haria falta saber como programar una capa de acceso
a datos para darle persistencia a datos en XML en un repositorio de oracle... o algo pa guiarme o estudiarme....... gracias de antemano