Ejercicio: Concurso Talentos v2 Ejercicio Proyecto Concurso de Talentos v2 Curso de Spring Framework © Derechos © Derechos Reservados Reservados GlobalGlobal Mentoring Mentoring 2011 2012 Ejercicio: Concurso Talentos v2 Objetivo del Ejercicio •El objetivo del ejercicio es modificar el proyecto de Concurso de Talentos para poner en práctica la inyección de dependencias. Al finalizar deberemos tener el Proyecto Concurso Talentos v2 con las siguientes clases: Curso de Spring Framework 2 © Derechos © Derechos Reservados Reservados GlobalGlobal Mentoring Mentoring 2011 2012 Ejercicio: Concurso Talentos v2 Paso 1: Inyección por Constructor • Inyección de Valores por Constructor. Modificar la definición del bean en el archivo applicationContext.xml por el siguiente: <bean id="solei" class="concursantes.Malabarista" > <constructor-arg value="10" /> </bean> • Abrir la clase TestConcursoTalentos.java y modificar la variable noPelotas a 10: int noPelotas = 10; Curso de Spring Framework © Derechos © Derechos Reservados Reservados GlobalGlobal Mentoring Mentoring 2011 2012 Ejercicio: Concurso Talentos v2 Paso 2: Ejecutar el Test • Ejecutamos el test como JUnit y obtenemos el siguiente resultado: Curso de Spring Framework © Derechos © Derechos Reservados Reservados GlobalGlobal Mentoring Mentoring 2011 2012 Ejercicio: Concurso Talentos v2 Malabarista Recitador • Solei es más que un simple malabarista. Además puede recitar poemas mientras hace malabares. • Así que a continuación agregaremos algunas clases más a nuestro proyecto para definir mejor las características de este sobresaliente malabarista. Puedo recitar bellos poemas mientras hago malabares Curso de Spring Framework © Derechos © Derechos Reservados Reservados GlobalGlobal Mentoring Mentoring 2011 2012 Ejercicio: Concurso Talentos v2 Paso 1. Crear la Interface Poema Crear la interface Poema.java y agregar el siguiente código: package concursantes; public interface Poema { void recitar(); } Curso de Spring Framework 6 © Derechos © Derechos Reservados Reservados GlobalGlobal Mentoring Mentoring 2011 2012 Ejercicio: Concurso Talentos v2 Paso 2. Crear la clase Soneto Crear la clase Soneto.java y agregar el siguiente código: package concursantes; public class Soneto implements Poema { public void recitar() { String sonetoPasionSorJuana = "Este, que ves, engaño colorido, \n" + "que del arte ostentando los primores,\n" + "con falsos silogismos de colores\n" + "es cauteloso engaño del sentido; \n" + "éste, en quien la lisonja ha pretendido\n" + "excusar de los años los horrores, \n" + "y venciendo del tiempo los rigores \n" + "triunfar de la vejez y del olvido, \n" + "es un vano artificio del cuidado, \n" + "es una flor al viento delicada, \n" + "es un resguardo inútil para el hado, \n" + "es una necia diligencia errada, \n" + "es un afán caduco y, bien mirado, \n" + "es cadáver, es polvo, es sombra, es nada. \n"; System.out.println("\nSoneto:" + sonetoPasionSorJuana); } } Curso de Spring Framework 7 © Derechos © Derechos Reservados Reservados GlobalGlobal Mentoring Mentoring 2011 2012 Ejercicio: Concurso Talentos v2 Paso 3. Crear la clase MalabaristaRecitador Crear la clase Soneto.java y agregar el siguiente código: package concursantes; public class MalabaristaRecitador extends Malabarista { private Poema poema; public MalabaristaRecitador(Poema poema) { super(); this.poema = poema; } public MalabaristaRecitador(int pelotas, Poema poema) { super(pelotas); this.poema = poema; } public void ejecutar() throws EjecucionException { super.ejecutar(); System.out.println("Mientras recita..."); poema.recitar(); System.out.println("Termina recitación..."); } } Curso de Spring Framework 8 © Derechos © Derechos Reservados Reservados GlobalGlobal Mentoring Mentoring 2011 2012 Ejercicio: Concurso Talentos v2 Paso 4: Configurar los beans en Spring • A continuación declaramos los bean en Spring y realizamos la inyección de Valores por Constructor, agregando los siguientes beans al archivo applicationContext.xml : <bean id="sonetoSorJuana" class="concursantes.Soneto" /> <bean id="soleiRecitador" class="concursantes.MalabaristaRecitador"> <constructor-arg value="10" /> <constructor-arg ref="sonetoSorJuana" /> </bean> • La lógica de esta configuración es similar a la siguiente, sin embargo Spring lo hace a través del API de Reflection: Poema sonetoSorJuana = new Soneto(); Concursante concursante = new MalabaristaRecitador(10, sonetoSorJuana); Curso de Spring Framework © Derechos © Derechos Reservados Reservados GlobalGlobal Mentoring Mentoring 2011 2012 Ejercicio: Concurso Talentos v2 Paso 5: Modificar la clase Test • Reemplazar el código de la clase TestConcursoTalentos.java por el siguiente: @Test public void testMalabarista() { logger.info("Inicio de ejecutar Malabarista"); package test; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.junit.Before; import org.junit.Test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import static org.junit.Assert.assertEquals; int noPelotas = 10; malabarista1.ejecutar(); assertEquals(noPelotas, ((Malabarista) malabarista1).getPelotas()); logger.info("Fin de Ejecutar Malabarista"); logger.info("Inicio de ejecutar MalabaristaRecitador"); import concursantes.Concursante; import concursantes.Malabarista; noPelotas = 15; malabarista2.ejecutar(); assertEquals(noPelotas, ((Malabarista) malabarista2).getPelotas()); public class TestConcursoTalentos { private static Log logger = LogFactory.getLog("TestConcursoTalentos"); private Concursante malabarista1; private Concursante malabarista2; logger.info("Fin de Ejecutar MalabaristaRecitador"); } } @Before public void before() { ApplicationContext ctx = new ClassPathXmlApplicationContext( "applicationContext.xml"); malabarista1 = (Concursante) ctx.getBean("solei"); malabarista2 = (Concursante) ctx.getBean("soleiRecitador"); } Curso de Spring Framework © Derechos © Derechos Reservados Reservados GlobalGlobal Mentoring Mentoring 2011 2012 Ejercicio: Concurso Talentos v2 Paso 6: Ejecutar el Test • Ejecutamos el test como JUnit y obtenemos el siguiente resultado: Curso de Spring Framework © Derechos © Derechos Reservados Reservados GlobalGlobal Mentoring Mentoring 2011 2012
© Copyright 2024