Conmutación de información chino-inglés a través de IoC

JavaJavaBeginner
Practicar Ahora

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

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 IMessage con un método abstracto doMessage()
  • Cómo implementar la interfaz IMessage en dos clases concretas: MessageCN y MessageEN
  • 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

Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL java(("Java")) -.-> java/ProgrammingTechniquesGroup(["Programming Techniques"]) java(("Java")) -.-> java/ObjectOrientedandAdvancedConceptsGroup(["Object-Oriented and Advanced Concepts"]) java(("Java")) -.-> java/SystemandDataProcessingGroup(["System and Data Processing"]) java/ProgrammingTechniquesGroup -.-> java/method_overriding("Method Overriding") java/ObjectOrientedandAdvancedConceptsGroup -.-> java/classes_objects("Classes/Objects") java/ObjectOrientedandAdvancedConceptsGroup -.-> java/oop("OOP") java/ObjectOrientedandAdvancedConceptsGroup -.-> java/encapsulation("Encapsulation") java/ObjectOrientedandAdvancedConceptsGroup -.-> java/interface("Interface") java/ObjectOrientedandAdvancedConceptsGroup -.-> java/annotation("Annotation") java/SystemandDataProcessingGroup -.-> java/xml_dom4j("XML/Dom4j") subgraph Lab Skills java/method_overriding -.-> lab-300348{{"Conmutación de información chino-inglés a través de IoC"}} java/classes_objects -.-> lab-300348{{"Conmutación de información chino-inglés a través de IoC"}} java/oop -.-> lab-300348{{"Conmutación de información chino-inglés a través de IoC"}} java/encapsulation -.-> lab-300348{{"Conmutación de información chino-inglés a través de IoC"}} java/interface -.-> lab-300348{{"Conmutación de información chino-inglés a través de IoC"}} java/annotation -.-> lab-300348{{"Conmutación de información chino-inglés a través de IoC"}} java/xml_dom4j -.-> lab-300348{{"Conmutación de información chino-inglés a través de IoC"}} end

Crea la interfaz IMessage

En este paso, creará la interfaz IMessage, que contiene un método abstracto llamado doMessage() sin valor de retorno.

  1. Crea un nuevo archivo Java llamado IMessage.java en el paquete com.labex.
  2. Dentro del archivo, define la interfaz IMessage con 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.

✨ Revisar Solución y Practicar

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

  1. Crea un nuevo archivo Java llamado MessageCN.java en el paquete com.labex.
  2. Dentro del archivo, define la clase MessageCN con 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.

✨ Revisar Solución y Practicar

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

  1. Crea un nuevo archivo Java llamado MessageEN.java en el paquete com.labex.
  2. Dentro del archivo, define la clase MessageEN con 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.

✨ Revisar Solución y Practicar

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.

  1. Crea un nuevo archivo llamado applicationContext.xml en el directorio src/main/resources.
  2. 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".

✨ Revisar Solución y Practicar

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.

  1. Crea un nuevo archivo Java llamado TestGreeting.java en el paquete com.labex.
  2. Dentro del archivo, define la clase TestGreeting con 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.

  1. 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] ------------------------------------------------------------------------
✨ Revisar Solución y Practicar

Resumen

¡Felicitaciones! Has completado este proyecto. Puedes practicar más laboratorios en LabEx para mejorar tus habilidades.