Troca de Informações Chinês-Inglês via IoC

JavaBeginner
Pratique Agora

Introdução

Neste projeto, você aprenderá como implementar um sistema simples de comutação de mensagens Chinês-Inglês usando o padrão de projeto Inversão de Controle (IoC) e o framework Spring.

👀 Pré-visualização

[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] ------------------------------------------------------------------------

🎯 Tarefas

Neste projeto, você aprenderá:

  • Como criar uma interface IMessage com um método abstrato doMessage()
  • Como implementar a interface IMessage em duas classes concretas: MessageCN e MessageEN
  • Como configurar os beans de mensagem usando o arquivo applicationContext.xml
  • Como testar a funcionalidade de comutação de mensagens na classe TestGreeting

🏆 Conquistas

Após concluir este projeto, você será capaz de:

  • Usar o padrão de projeto IoC para desacoplar a implementação da funcionalidade de mensagens da aplicação principal
  • Usar o framework Spring para configurar e gerenciar os beans de mensagem
  • Escrever testes unitários para verificar a funcionalidade do sistema de comutação de mensagens

Criar a Interface IMessage

Nesta etapa, você criará a interface IMessage, que contém um método abstrato chamado doMessage() sem um valor de retorno.

  1. Crie um novo arquivo Java chamado IMessage.java no pacote com.labex.
  2. Dentro do arquivo, defina a interface IMessage com o seguinte código:
package com.labex;

// Interface para a funcionalidade de mensagens
public interface IMessage {
    // Assinatura do método para exibir uma mensagem
    void doMessage();
}

Esta interface define a estrutura básica para qualquer classe que deseje implementar a funcionalidade de mensagens. O método doMessage() é um método abstrato que será implementado pelas classes de mensagem concretas.

Criar a Classe MessageCN

Nesta etapa, você criará a classe MessageCN, que implementa a interface IMessage. Esta classe terá um atributo msg e fornecerá métodos get/set. Ela também sobrescreverá o método doMessage() para exibir a string "你好,Labex".

  1. Crie um novo arquivo Java chamado MessageCN.java no pacote com.labex.
  2. Dentro do arquivo, defina a classe MessageCN com o seguinte código:
package com.labex;

// Implementação da interface IMessage para mensagens em chinês
public class MessageCN implements IMessage {
    private String msg; // Variável para armazenar a mensagem

    // Método getter para recuperar a mensagem
    public String getMsg() {
        return msg;
    }

    // Método setter para definir a mensagem
    public void setMsg(String msg) {
        this.msg = msg;
    }

    // Implementação do método doMessage da interface IMessage
    @Override
    public void doMessage() {
        // Imprime uma mensagem de saudação em chinês
        System.out.println("你好," + msg);
    }
}

A classe MessageCN implementa a interface IMessage e fornece a implementação para o método doMessage(), que imprime uma mensagem de saudação em chinês.

Criar a Classe MessageEN

Nesta etapa, você criará a classe MessageEN, que também implementa a interface IMessage. Esta classe terá um atributo msg e fornecerá métodos get/set. Ela sobrescreverá o método doMessage() para exibir a string "hello,Labex".

  1. Crie um novo arquivo Java chamado MessageEN.java no pacote com.labex.
  2. Dentro do arquivo, defina a classe MessageEN com o seguinte código:
package com.labex;

// Implementação da interface IMessage para mensagens em inglês
public class MessageEN implements IMessage {
    private String msg; // Variável para armazenar a mensagem

    // Método getter para recuperar a mensagem
    public String getMsg() {
        return msg;
    }

    // Método setter para definir a mensagem
    public void setMsg(String msg) {
        this.msg = msg;
    }

    // Implementação do método doMessage da interface IMessage
    @Override
    public void doMessage() {
        // Imprime uma mensagem de saudação em inglês
        System.out.println("Hello, " + msg);
    }
}

A classe MessageEN implementa a interface IMessage e fornece a implementação para o método doMessage(), que imprime uma mensagem de saudação em inglês.

Criar o Arquivo de Configuração applicationContext.xml

Nesta etapa, você criará o arquivo de configuração applicationContext.xml para configurar os JavaBeans criados acima e passar as informações do atributo msg na configuração.

  1. Crie um novo arquivo chamado applicationContext.xml no diretório src/main/resources.
  2. Dentro do arquivo, adicione a seguinte configuração 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">

 <!-- Configuração para o bean de mensagem em chinês -->
 <bean id="messageCN" class="com.labex.MessageCN">
  <!-- Define a propriedade 'msg' do bean MessageCN como "Labex" -->
  <property name="msg" value="Labex"/>
 </bean>

 <!-- Configuração para o bean de mensagem em inglês -->
 <bean id="messageEN" class="com.labex.MessageEN">
  <!-- Define a propriedade 'msg' do bean MessageEN como "Labex" -->
  <property name="msg" value="Labex"/>
 </bean>

</beans>

Este arquivo de configuração configura os beans MessageCN e MessageEN e inicializa suas propriedades msg com o valor "Labex".

Criar a Classe TestGreeting

Nesta etapa, você criará a classe TestGreeting e adicionará um método de teste chamado testGreeting() para realizar a operação de teste.

  1. Crie um novo arquivo Java chamado TestGreeting.java no pacote com.labex.
  2. Dentro do arquivo, defina a classe TestGreeting com o seguinte código:
package com.labex;

import org.junit.Test;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class TestGreeting {

    @Test
    public void testGreeting() {
        // Carrega o contexto da aplicação Spring a partir do arquivo de configuração XML
        ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");

        // Recupera os beans de mensagem do contexto
        IMessage messageCN = (IMessage) context.getBean("messageCN"); // Bean de mensagem em chinês
        IMessage messageEN = (IMessage) context.getBean("messageEN"); // Bean de mensagem em inglês

        // Invoca o método 'doMessage' no bean de mensagem em chinês
        messageCN.doMessage();

        // Invoca o método 'doMessage' no bean de mensagem em inglês
        messageEN.doMessage();

        context.close();
    }
}

A classe TestGreeting carrega o contexto da aplicação Spring do arquivo applicationContext.xml, recupera os beans MessageCN e MessageEN e, em seguida, chama seus métodos doMessage() para testar a funcionalidade.

Agora, você concluiu todas as etapas para criar o projeto de Troca de Informações Chinês-Inglês via IoC. Você pode agora executar o teste e ver a saída esperada.

  1. Execute o teste:
cd ~/project/SpringGreeting/
mvn test

O teste deve passar e você deve ver a seguinte saída:

[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] ------------------------------------------------------------------------

Resumo

Parabéns! Você concluiu este projeto. Você pode praticar mais laboratórios no LabEx para aprimorar suas habilidades.

✨ Verificar Solução e Praticar✨ Verificar Solução e Praticar✨ Verificar Solução e Praticar✨ Verificar Solução e Praticar✨ Verificar Solução e Praticar