Groovy es un lenguaje dinámico de programación alternativo para la plataforma Java. Spring tiene soporte nativo para incorporar scripts escritos en Groovy, y utilizarlos dentro de la aplicación como si fueran beans comunes. Es decir, es posible declarar un bean, inyectar y utilizarlo como una clase Java más, cuando en realidad su implementación es un script.
Todo esto se realiza a través del soporte para lenguajes dinámicos que forma parte de Spring 2.x, que permite programar clases en cualquiera de los lenguajes dinámicos soportados, y hacer que Spring automáticamente realiza la instanciación, configuración e inyección de los objetos resultantes.
Actualmente, Spring soporta 3 lenguajes dinámicos:
- Groovy
- JRuby
- BeanShell
Independientemente del lenguaje, los pasos para realizar esta integración son muy simples:
- Crear una interfaz en Java
- Implementar la interfaz con el script (en Groovy, JRuby o BeanShell)
- Declarar en bean en Spring indicando que la interfaz Java es implementada por un script.
Una de las principales ventajas de esto es que los cambios al script se pueden hacer en tiempo de ejecución: dicho de otra forma, se puede modificar el comportamiento de un bean en caliente, con la aplicación corriendo. Esto puede resultar sumamente útil para aislar lógica que pueda necesitar ser modificada en tiempo de ejecución, por distintos motivos.
En la página Groovy Con Spring en la wiki de Dos Ideas pueden encontrar un ejemplo completo, junto a un test unitario. También pueden descargar un proyecto de ejemplo con todas las librerias necesarias para ejecutarse.