Ejercicio: Concurso Talentos v3 Ejercicio Proyecto Concurso de Talentos v3 Curso de Spring Framework © Derechos © Derechos Reservados Reservados GlobalGlobal Mentoring Mentoring 2011 2012 Ejercicio: Concurso Talentos v3 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 por setter. 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 v3 Músico Virtuoso • Demos la bienvenida a un nuevo concursante, Jason, el cual es un músico virtuoso. • Así que a continuación agregaremos algunas clases más a nuestro proyecto para definir las características de este sobresaliente músico. Curso de Spring Framework © Derechos © Derechos Reservados Reservados GlobalGlobal Mentoring Mentoring 2011 2012 Ejercicio: Concurso Talentos v3 Paso 1. Crear la Interface Instrumento Crear la interface Instrumento.java y agregar el siguiente código: package concursantes; public interface Instrumento { void tocar(); } Curso de Spring Framework 4 © Derechos © Derechos Reservados Reservados GlobalGlobal Mentoring Mentoring 2011 2012 Ejercicio: Concurso Talentos v3 Paso 2. Crear la clase Piano Crear la clase Piano.java y agregar el siguiente código: package concursantes; public class Piano implements Instrumento { public void tocar() { System.out.println("Clin clin clin clin..."); } } Curso de Spring Framework 5 © Derechos © Derechos Reservados Reservados GlobalGlobal Mentoring Mentoring 2011 2012 Ejercicio: Concurso Talentos v3 Paso 3. Crear la clase Saxofon Crear la clase Saxofon.java y agregar el siguiente código: package concursantes; public class Saxofon implements Instrumento { public void tocar() { System.out.println("Tuu tuu tuu tuu..."); } } Curso de Spring Framework 6 © Derechos © Derechos Reservados Reservados GlobalGlobal Mentoring Mentoring 2011 2012 Ejercicio: Concurso Talentos v3 Paso 4. Crear la clase Musico Crear la clase Musico.java y agregar el siguiente código: package concursantes; public class Musico implements Concursante { private String cancion; private Instrumento instrumento; public Musico() { } public void ejecutar() throws EjecucionException { System.out.println("Tocando " + cancion + ": "); instrumento.tocar(); } public String getCancion() { return cancion; } public void setCancion(String cancion) { this.cancion = cancion; } public Instrumento getInstrumento() { return instrumento; } public void setInstrumento(Instrumento instrumento) { this.instrumento = instrumento; } } Curso de Spring Framework 7 © Derechos © Derechos Reservados Reservados GlobalGlobal Mentoring Mentoring 2011 2012 Ejercicio: Concurso Talentos v3 Paso 5: Configurar los beans en Spring • A continuación declaramos los bean en Spring y realizamos la inyección de Valores por Setter, agregando los siguientes beans al archivo applicationContext.xml : <!-- Codigo Musico --> <bean id="piano" class="concursantes.Piano"/> <bean id="jasonPiano" class="concursantes.Musico"> <property name="cancion" value="Noche de Paz"/> <property name="instrumento" ref="piano"></property> </bean> <!-- cambio de instrumento --> <bean id="jasonSax" class="concursantes.Musico"> <property name="cancion" value="Equinox"/> <!-- bean interno (inner bean) --> <property name="instrumento"> <bean class="concursantes.Saxofon"/> </property> </bean> Curso de Spring Framework © Derechos © Derechos Reservados Reservados GlobalGlobal Mentoring Mentoring 2011 2012 Ejercicio: Concurso Talentos v3 Paso 6: 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 static org.junit.Assert.assertEquals; 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; int noPelotas = 10; malabarista1.ejecutar(); assertEquals(noPelotas, ((Malabarista) malabarista1).getPelotas()); import concursantes.Concursante; import concursantes.Malabarista; import concursantes.Musico; noPelotas = 15; malabarista2.ejecutar(); assertEquals(noPelotas, ((Malabarista) malabarista2).getPelotas()); public class TestConcursoTalentos { logger.info("Fin de Ejecutar MalabaristaRecitador"); private static Log logger = LogFactory.getLog("TestConcursoTalentos"); private Concursante malabarista1; private Concursante malabarista2; private Concursante musico1; private Concursante musico2; logger.info("Inicio de ejecutar Pianista"); logger.info("Fin de Ejecutar Malabarista"); logger.info("Inicio de ejecutar MalabaristaRecitador"); String cancion = "Noche de Paz"; musico1.ejecutar(); assertEquals(cancion, ((Musico) musico1).getCancion()); logger.info("Fin de Ejecutar Pianista"); @Before public void before() { ApplicationContext ctx = new ClassPathXmlApplicationContext( "applicationContext.xml"); malabarista1 = (Concursante) ctx.getBean("solei"); malabarista2 = (Concursante) ctx.getBean("soleiRecitador"); musico1 = (Concursante) ctx.getBean("jasonPiano"); musico2 = (Concursante) ctx.getBean("jasonSax"); } logger.info("Inicio de ejecutar Saxofonista"); cancion = "Equinox"; musico2.ejecutar(); assertEquals(cancion, ((Musico) musico2).getCancion()); logger.info("Fin de Ejecutar Saxofonista"); } } Curso de Spring Framework © Derechos © Derechos Reservados Reservados GlobalGlobal Mentoring Mentoring 2011 2012 Ejercicio: Concurso Talentos v3 Paso 7: 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