martes, 27 de enero de 2009

Inyección de métodos en Spring (method injection)

Spring permite hacer inyección en las propiedades de los beans definidos dentro del Spring Context, pero que tal si quisiéramos inyectar un método ? para esto Spring también provee dos maneras de hacer la inyección de métodos o method inyection el cual vamos a poner un ejemplo de cómo funciona en ambos casos . Primero veremos el primer method llamado reemplaza miento de método o method replacement (mas adelante posteare la otra forma), Supongamos que tenemos esta clase:


package com.blogspot.snakepitit.beans

public class CajaMagicaImpl implements ICajaMagica {
private String getContenido() {
return “Este es el contenido de la caja de CajaMagicaImpl”;
}
}

En el application context deberíamos definir este bean de la siguiente manera


<bean id="cajita" class="com.blogspot.snakepitit.beans.CajaMagicaImpl">
<replaced-method name="getContenido" target="claseReemplazadora">
</bean>

<bean id="claseReemplazadora" class="com.blogspot.snakepitit.replacers.MiClaseReemplazadora">

Ya con este le decimos que el método getContenido se lo va a dar miClaseReemplazadora y no lo va a tomar desde CajaMagicaImpl, solamente nos faltaría definir miClaseReemplazadora para que quede listo, para que una clase pueda reemplazar un método debe implementar una interfaz de Spring MethodReplacer e implementar el método reimplement de la siguiente manera


package com.blogspot.snakepitit.replacers

public class MiClaseReemplazadora implements MethodReplacer {

public Object reimplement(Object target, Method method, Object[] args) {
return “Este es el contenido de la caja de MiClaseReemplazadora”;
}
}

Solamente con implementar MethodReplacer y definir el replaced-method en el bean que queremos que se inyecte el método estaría funcionando, esperen que dejen sus comentarios a ver que problemas surguieron, para la proxima voy a tratar de explicar el segundo metodo de inyeccion de metodos (getters method)