Introducción
En este proyecto, aprenderá a implementar un sencillo sistema de conmutación de mensajes chino-inglés utilizando el patrón de diseño Inversión de Control (IoC) y el marco Spring.
👀 Vista previa
[INFO] -------------------------------------------------------
[INFO] T E S T S
[INFO] -------------------------------------------------------
[INFO] Ejecutando com.labex.TestGreeting
你好, Labex
Hello, Labex
[INFO] Pruebas ejecutadas: 1, Fallos: 0, Errores: 0, Omisionados: 0, Tiempo transcurrido: 1,056 s - en com.labex.TestGreeting
[INFO]
[INFO] Resultados:
[INFO]
[INFO] Pruebas ejecutadas: 1, Fallos: 0, Errores: 0, Omisionados: 0
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] CONSTRUCCIÓN EXITOSA
[INFO] ------------------------------------------------------------------------
[INFO] Tiempo total: 11,295 s
[INFO] Finalizado en: 2024-05-10T12:05:55Z
[INFO] ------------------------------------------------------------------------
🎯 Tareas
En este proyecto, aprenderá:
- Cómo crear una interfaz
IMessagecon un método abstractodoMessage() - Cómo implementar la interfaz
IMessageen dos clases concretas:MessageCNyMessageEN - Cómo configurar los beans de mensaje utilizando el archivo
applicationContext.xml - Cómo probar la funcionalidad de conmutación de mensajes en la clase
TestGreeting
🏆 Logros
Después de completar este proyecto, podrá:
- Utilizar el patrón de diseño IoC para desacoplar la implementación de la funcionalidad de mensaje de la aplicación principal
- Utilizar el marco Spring para configurar y administrar los beans de mensaje
- Escribir pruebas unitarias para verificar la funcionalidad del sistema de conmutación de mensajes
Crea la interfaz IMessage
En este paso, creará la interfaz IMessage, que contiene un método abstracto llamado doMessage() sin valor de retorno.
- Crea un nuevo archivo Java llamado
IMessage.javaen el paquetecom.labex. - Dentro del archivo, define la interfaz
IMessagecon el siguiente código:
package com.labex;
// Interfaz para la funcionalidad de mensajes
public interface IMessage {
// Firma del método para mostrar un mensaje
void doMessage();
}
Esta interfaz define la estructura básica para cualquier clase que desee implementar la funcionalidad de mensajes. El método doMessage() es un método abstracto que será implementado por las clases de mensajes concretas.
Crea la clase MessageCN
En este paso, creará la clase MessageCN, que implementa la interfaz IMessage. Esta clase tendrá un atributo msg y proporcionará métodos get/set. También sobrescribirá el método doMessage() para imprimir la cadena "你好,Labex".
- Crea un nuevo archivo Java llamado
MessageCN.javaen el paquetecom.labex. - Dentro del archivo, define la clase
MessageCNcon el siguiente código:
package com.labex;
// Implementación de la interfaz IMessage para mensajes en chino
public class MessageCN implements IMessage {
private String msg; // Variable para almacenar el mensaje
// Método getter para recuperar el mensaje
public String getMsg() {
return msg;
}
// Método setter para establecer el mensaje
public void setMsg(String msg) {
this.msg = msg;
}
// Implementación del método doMessage de la interfaz IMessage
@Override
public void doMessage() {
// Imprime un mensaje de saludo en chino
System.out.println("你好," + msg);
}
}
La clase MessageCN implementa la interfaz IMessage y proporciona la implementación para el método doMessage(), que imprime un mensaje de saludo en chino.
Crea la clase MessageEN
En este paso, creará la clase MessageEN, que también implementa la interfaz IMessage. Esta clase tendrá un atributo msg y proporcionará métodos get/set. Sobrescribirá el método doMessage() para imprimir la cadena "hello,Labex".
- Crea un nuevo archivo Java llamado
MessageEN.javaen el paquetecom.labex. - Dentro del archivo, define la clase
MessageENcon el siguiente código:
package com.labex;
// Implementación de la interfaz IMessage para mensajes en inglés
public class MessageEN implements IMessage {
private String msg; // Variable para almacenar el mensaje
// Método getter para recuperar el mensaje
public String getMsg() {
return msg;
}
// Método setter para establecer el mensaje
public void setMsg(String msg) {
this.msg = msg;
}
// Implementación del método doMessage de la interfaz IMessage
@Override
public void doMessage() {
// Imprime un mensaje de saludo en inglés
System.out.println("Hello, " + msg);
}
}
La clase MessageEN implementa la interfaz IMessage y proporciona la implementación para el método doMessage(), que imprime un mensaje de saludo en inglés.
Crea el archivo de configuración applicationContext.xml
En este paso, creará el archivo de configuración applicationContext.xml para configurar los JavaBeans creados anteriormente y pasar la información del atributo msg en la configuración.
- Crea un nuevo archivo llamado
applicationContext.xmlen el directoriosrc/main/resources. - Dentro del archivo, agrega la siguiente configuración XML:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<!-- Configuración para el bean de mensaje en chino -->
<bean id="messageCN" class="com.labex.MessageCN">
<!-- Establece la propiedad'msg' del bean MessageCN a "Labex" -->
<property name="msg" value="Labex"/>
</bean>
<!-- Configuración para el bean de mensaje en inglés -->
<bean id="messageEN" class="com.labex.MessageEN">
<!-- Establece la propiedad'msg' del bean MessageEN a "Labex" -->
<property name="msg" value="Labex"/>
</bean>
</beans>
Este archivo de configuración configura los beans MessageCN y MessageEN e inicializa sus propiedades msg con el valor "Labex".
Crea la clase TestGreeting
En este paso, creará la clase TestGreeting y agregará un método de prueba llamado testGreeting() para realizar la operación de prueba.
- Crea un nuevo archivo Java llamado
TestGreeting.javaen el paquetecom.labex. - Dentro del archivo, define la clase
TestGreetingcon el siguiente código:
package com.labex;
import org.junit.Test;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class TestGreeting {
@Test
public void testGreeting() {
// Carga el contexto de la aplicación Spring a partir del archivo de configuración XML
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
// Recupera los beans de mensaje del contexto
IMessage messageCN = (IMessage) context.getBean("messageCN"); // Bean de mensaje en chino
IMessage messageEN = (IMessage) context.getBean("messageEN"); // Bean de mensaje en inglés
// Invoca el método 'doMessage' en el bean de mensaje en chino
messageCN.doMessage();
// Invoca el método 'doMessage' en el bean de mensaje en inglés
messageEN.doMessage();
context.close();
}
}
La clase TestGreeting carga el contexto de la aplicación Spring a partir del archivo applicationContext.xml, recupera los beans MessageCN y MessageEN y luego llama a sus métodos doMessage() para probar la funcionalidad.
Ahora, has completado todos los pasos para crear el proyecto de conmutación de información chino-inglés a través de IoC. Ahora puedes ejecutar la prueba y ver la salida esperada.
- Ejecuta la prueba:
cd ~/project/SpringGreeting/
mvn test
La prueba debe pasar y deberías ver la siguiente salida:
[INFO] -------------------------------------------------------
[INFO] T E S T S
[INFO] -------------------------------------------------------
[INFO] Running com.labex.TestGreeting
你好, Labex
Hello, Labex
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.056 s - in com.labex.TestGreeting
[INFO]
[INFO] Results:
[INFO]
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 11.295 s
[INFO] Finished at: 2024-05-10T12:05:55Z
[INFO] ------------------------------------------------------------------------
Resumen
¡Felicitaciones! Has completado este proyecto. Puedes practicar más laboratorios en LabEx para mejorar tus habilidades.



