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
s
...
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