lunes, abril 25, 2011

Primeros Pasos Con Spring II

La entrada anterior vimos como inyectar una clase a otra de una forma sensilla, ahora veamos que pasa si utilizamos Interfaces

1.- Hay que crear una interfaz


public interface Impresora{
           public void imprimirTexto(String elTexto);
 }

2.- Hagamos dos implementaciones de Impresora


public class ImpresoraPorPalabras implements Impresora{
          public void imprimirTexto(String elTexto){
                    String [ ] separadoEnPalabras = elTexto.split(" ");
                    int pal=1;

                    for(String palabra: separadoEnPalabras){
                              System.out.println(pal + " " + palabra); 
                               pal++;
                    }
          } 
}


public class ImpresoraPorLetras implements Impresora{
           public void imprimirTexto(String elTexto){
                     char [ ] letras = elTexto.toCharArray();
                     int let=1;
                     for(char letra: letras){
                               System.out.println( let + " " + letra );
                               let++;
                     }
           }
}

3.-  Creamos nuestra clase que llamara a alguna implementacion de Impresora

public class EnviaTextos{
           public Impresora miImpresora;
           public void setMiImpresora(Impresora miImpresora){
                     this.miImpresora = miImpresora;
           }
          public Impresora getMiImpresora(){
                     return miImpresora;

          }
          public void mandarTextos(){
                     getMiImpresora().imprimirTexto("Interfaces con Spring, solo en Java-Limos");
           }

}
 
4.-  En nuestro applicationContext.xml mapearemos las 3 clases


< bean class="ejemplos.spring.basico.interfaces.ImpresoraPorLetras" id="porLetras" / >


< bean class="ejemplos.spring.basico.interfaces.ImpresoraPorPalabras" id="porPalabras" / > 


< bean class="ejemplos.spring.basico.interfaces.EnviaTextos" id="enviaTextos" >
          <property name="miImpresora" ref="porPalabras"/>
< / bean >


5.- En nuestra clase Test hagamos instancia a EnviaTextos


public class Test{          public static void main( String[ ] args ) {                    BeanFactory fabricaDeBeans= new XmlBeanFactory(new ClassPathResource("/applicationContext.xml"));

                    EnviaTextos textos = (EnviaTextos)fabricaDeBeans.getBean(EnviaTextos.class);

                    textos.mandarTextos();       
    }
}


NOTA: En este caso si ejecutamos la aplicacion saldria un resultado :

Interfaces 
con 
Spring, 
solo 
en 
Java-Limos
 

pero si en el applicationContext cambiamos


< bean class="ejemplos.spring.basico.interfaces.EnviaTextos" id="enviaTextos" >
          <property name="miImpresora" ref="porLetras"/>
< / bean >

sin necesidad de recompilar, el resultado seria

I
n
t
e
r
f
a
c
e

...


esta es una ventaja mas de Spring, que sin necesidad de recompilar una aplicacion, podemos cambiar la implementacion de una interfaz simplemente modificando el applicationContext...

No hay comentarios:

Publicar un comentario