Introduction
Dans ce projet, vous allez apprendre à implémenter un simple système de commutation de messages entre le chinois et l'anglais à l'aide du modèle de conception Inversion of Control (IoC) et du framework Spring.
👀 Aperçu
[INFO] -------------------------------------------------------
[INFO] T E S T S
[INFO] -------------------------------------------------------
[INFO] Exécution de com.labex.TestGreeting
你好, Labex
Bonjour, Labex
[INFO] Tests exécutés : 1, Échecs : 0, Erreurs : 0, Ignorés : 0, Temps écoulé : 1,056 s - dans com.labex.TestGreeting
[INFO]
[INFO] Résultats :
[INFO]
[INFO] Tests exécutés : 1, Échecs : 0, Erreurs : 0, Ignorés : 0
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Durée totale : 11,295 s
[INFO] Terminé à : 2024-05-10T12:05:55Z
[INFO] ------------------------------------------------------------------------
🎯 Tâches
Dans ce projet, vous allez apprendre :
- Comment créer une interface
IMessageavec une méthode abstraitedoMessage() - Comment implémenter l'interface
IMessagedans deux classes concrètes :MessageCNetMessageEN - Comment configurer les beans de message à l'aide du fichier
applicationContext.xml - Comment tester la fonctionnalité de commutation de messages dans la classe
TestGreeting
🏆 Réalisations
Après avoir terminé ce projet, vous serez capable de :
- Utiliser le modèle de conception IoC pour découpler l'implémentation de la fonctionnalité de message de l'application principale
- Utiliser le framework Spring pour configurer et gérer les beans de message
- Écrire des tests unitaires pour vérifier la fonctionnalité du système de commutation de messages
Créer l'interface IMessage
Dans cette étape, vous allez créer l'interface IMessage, qui contient une méthode abstraite appelée doMessage() sans valeur de retour.
- Créez un nouveau fichier Java nommé
IMessage.javadans le packagecom.labex. - Dans le fichier, définissez l'interface
IMessageavec le code suivant :
package com.labex;
// Interface pour la fonctionnalité de message
public interface IMessage {
// Signature de la méthode pour afficher un message
void doMessage();
}
Cette interface définit la structure de base pour toute classe qui veut implémenter la fonctionnalité de message. La méthode doMessage() est une méthode abstraite qui sera implémentée par les classes de message concrètes.
Créer la classe MessageCN
Dans cette étape, vous allez créer la classe MessageCN, qui implémente l'interface IMessage. Cette classe aura un attribut msg et fournira des méthodes get/set. Elle redéfinirá également la méthode doMessage() pour afficher la chaîne "你好,Labex".
- Créez un nouveau fichier Java nommé
MessageCN.javadans le packagecom.labex. - Dans le fichier, définissez la classe
MessageCNavec le code suivant :
package com.labex;
// Implémentation de l'interface IMessage pour les messages en chinois
public class MessageCN implements IMessage {
private String msg; // Variable pour stocker le message
// Méthode getter pour récupérer le message
public String getMsg() {
return msg;
}
// Méthode setter pour définir le message
public void setMsg(String msg) {
this.msg = msg;
}
// Implémentation de la méthode doMessage de l'interface IMessage
@Override
public void doMessage() {
// Afficher un message de salutation en chinois
System.out.println("你好," + msg);
}
}
La classe MessageCN implémente l'interface IMessage et fournit l'implémentation de la méthode doMessage(), qui affiche un message de salutation en chinois.
Créer la classe MessageEN
Dans cette étape, vous allez créer la classe MessageEN, qui implémente également l'interface IMessage. Cette classe aura un attribut msg et fournira des méthodes get/set. Elle redéfinirá également la méthode doMessage() pour afficher la chaîne "hello,Labex".
- Créez un nouveau fichier Java nommé
MessageEN.javadans le packagecom.labex. - Dans le fichier, définissez la classe
MessageENavec le code suivant :
package com.labex;
// Implémentation de l'interface IMessage pour les messages en anglais
public class MessageEN implements IMessage {
private String msg; // Variable pour stocker le message
// Méthode getter pour récupérer le message
public String getMsg() {
return msg;
}
// Méthode setter pour définir le message
public void setMsg(String msg) {
this.msg = msg;
}
// Implémentation de la méthode doMessage de l'interface IMessage
@Override
public void doMessage() {
// Afficher un message de salutation en anglais
System.out.println("Hello, " + msg);
}
}
La classe MessageEN implémente l'interface IMessage et fournit l'implémentation de la méthode doMessage(), qui affiche un message de salutation en anglais.
Créer le fichier de configuration applicationContext.xml
Dans cette étape, vous allez créer le fichier de configuration applicationContext.xml pour configurer les JavaBeans créés ci-dessus et passer les informations d'attribut msg dans la configuration.
- Créez un nouveau fichier nommé
applicationContext.xmldans le répertoiresrc/main/resources. - Dans le fichier, ajoutez la configuration XML suivante :
<?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">
<!-- Configuration pour le bean de message en chinois -->
<bean id="messageCN" class="com.labex.MessageCN">
<!-- Définissez la propriété 'msg' du bean MessageCN sur "Labex" -->
<property name="msg" value="Labex"/>
</bean>
<!-- Configuration pour le bean de message en anglais -->
<bean id="messageEN" class="com.labex.MessageEN">
<!-- Définissez la propriété 'msg' du bean MessageEN sur "Labex" -->
<property name="msg" value="Labex"/>
</bean>
</beans>
Ce fichier de configuration configure les beans MessageCN et MessageEN et initialise leurs propriétés msg avec la valeur "Labex".
Créer la classe TestGreeting
Dans cette étape, vous allez créer la classe TestGreeting et ajouter une méthode de test appelée testGreeting() pour effectuer l'opération de test.
- Créez un nouveau fichier Java nommé
TestGreeting.javadans le packagecom.labex. - Dans le fichier, définissez la classe
TestGreetingavec le code suivant :
package com.labex;
import org.junit.Test;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class TestGreeting {
@Test
public void testGreeting() {
// Charger le contexte d'application Spring à partir du fichier de configuration XML
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
// Récupérer les beans de message à partir du contexte
IMessage messageCN = (IMessage) context.getBean("messageCN"); // Bean de message en chinois
IMessage messageEN = (IMessage) context.getBean("messageEN"); // Bean de message en anglais
// Appeler la méthode 'doMessage' sur le bean de message en chinois
messageCN.doMessage();
// Appeler la méthode 'doMessage' sur le bean de message en anglais
messageEN.doMessage();
context.close();
}
}
La classe TestGreeting charge le contexte d'application Spring à partir du fichier applicationContext.xml, récupère les beans MessageCN et MessageEN, puis appelle leurs méthodes doMessage() pour tester la fonctionnalité.
Maintenant, vous avez terminé toutes les étapes pour créer le projet de commutation d'informations chinoises-anglaises via IoC. Vous pouvez maintenant exécuter le test et voir la sortie attendue.
- Exécuter le test :
cd ~/project/SpringGreeting/
mvn test
Le test devrait réussir et vous devriez voir la sortie suivante :
[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] ------------------------------------------------------------------------
Résumé
Félicitations ! Vous avez terminé ce projet. Vous pouvez pratiquer plus de laboratoires sur LabEx pour améliorer vos compétences.



