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
IMessagecom um método abstratodoMessage() - Como implementar a interface
IMessageem duas classes concretas:MessageCNeMessageEN - 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.
- Crie um novo arquivo Java chamado
IMessage.javano pacotecom.labex. - Dentro do arquivo, defina a interface
IMessagecom 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".
- Crie um novo arquivo Java chamado
MessageCN.javano pacotecom.labex. - Dentro do arquivo, defina a classe
MessageCNcom 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".
- Crie um novo arquivo Java chamado
MessageEN.javano pacotecom.labex. - Dentro do arquivo, defina a classe
MessageENcom 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.
- Crie um novo arquivo chamado
applicationContext.xmlno diretóriosrc/main/resources. - 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.
- Crie um novo arquivo Java chamado
TestGreeting.javano pacotecom.labex. - Dentro do arquivo, defina a classe
TestGreetingcom 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.
- 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.



