Diferencia entre revisiones de «Groovy Con Spring»
(→Ver también) |
(→Ver también) |
||
Línea 90: | Línea 90: | ||
== Ver también == | == Ver también == | ||
* [[Groovy]] | * [[Groovy]] | ||
− | * | + | * [http://www.dosideas.com/descargas/doc_download/8-groovy-con-spring.html Descargar proyecto de ejemplo] |
* [http://static.springframework.org/spring/docs/2.0.x/reference/dynamic-language.html Dynamic language support ] | * [http://static.springframework.org/spring/docs/2.0.x/reference/dynamic-language.html Dynamic language support ] |
Revisión del 14:08 26 ago 2008
Spring Framework tiene soporte para integrar Groovy como un bean normal más. Además de Groovy, es posible integrar otros lenguajes dinámicos, como JRuby y BeanShell.
Contenido
Librerías necesarias
Se deben incluir las siguientes librerias:
- groovy-1.0.jar
- asm-2.2.2.jar
- antlr-2.7.6.jar
Todas vienen junto a la distribución de Groovy.
Ejemplo
En este ejemplo crearemos una interfaz en Java, la implementaremos en Groovy, y la declareremos como un bean más en Spring.
El código
Necesitamos crear 3 archivos:
- La interfaz Mensajero.java
- La implementación en groovy MensajeroImpl.groovy
- La configuración de Spring
La interfaz: Mensajero.java
package com.dosideas.dynlang;
public interface Mensajero {
String decirHola(String nombre);
}
El script de implementación: MensajeroImpl.groovy
package com.dosideas.dynlan.groovy;
import com.dosideas.dynlang.Mensajero
class MensajeroImpl implements Mensajero {
String decirHola(String nombre) { "Hola, " + nombre; }
}
Configuración de Spring: applicacion.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:lang="http://www.springframework.org/schema/lang" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/lang http://www.springframework.org/schema/lang/spring-lang-2.5.xsd"> <lang:groovy id="mensajero" script-source="classpath:MensajeroImpl.groovy" />
</beans>
Test
Crearemos un test que ejecute esta lógica. Accedemos directamente al bean mensajero, como si fuera un bean normal.
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {
"/application.xml"
}) public class MensajeroTest {
@Autowired private Mensajero instance;
@Test public void testProcessBooking() throws InterruptedException { String nombre = "Zim"; String result = instance.decirHola(nombre); String expResult = "Hola, " + nombre; assertEquals(expResult, result); }
}
Cambios en caliente
Es posible hacer que el script sea modificado y recompilado "en caliente". Es decir, teniendo a nuestra aplicación corriendo, podemos modificar la lógica del script y la misma comenzará a ejecutarse en caliente, sin necesidad de ningún otro cambio. Esta es sin dudas una de las características más interesantes de usar lenguajes dinámicos con Java.
Para activar esta característica hay que usar el atributo refresh-check-delay al momento de declarar el bean en Spring, el cual le indicará cada cuántos milisegundos debe buscar cambios en el script. Por ejemplo:
<lang:groovy id="messenger" script-source="classpath:Messenger.groovy" refresh-check-delay="1000"/>