Введение
В этом проекте вы научитесь реализовывать простую систему переключения сообщений на китайском и английском языках с использованием паттерна проектирования Inversion of Control (IoC) и фреймворка Spring.
👀 Предварительный просмотр
[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] ------------------------------------------------------------------------
🎯 Задачи
В этом проекте вы научитесь:
- Создавать интерфейс
IMessageс абстрактным методомdoMessage() - Реализовывать интерфейс
IMessageв двух конкретных классах:MessageCNиMessageEN - Конфигурировать биты сообщений с использованием файла
applicationContext.xml - Тестировать функцию переключения сообщений в классе
TestGreeting
🏆 Достижения
После завершения этого проекта вы сможете:
- Использовать паттерн проектирования IoC для отделения реализации функциональности сообщений от основной программы
- Использовать фреймворк Spring для настройки и управления битами сообщений
- Писать юнит-тесты для проверки функциональности системы переключения сообщений
Создайте интерфейс IMessage
В этом шаге вы создадите интерфейс IMessage, который содержит абстрактный метод doMessage(), не возвращающий значение.
- Создайте новый Java-файл с именем
IMessage.javaв пакетеcom.labex. - Внутри файла определите интерфейс
IMessageс помощью следующего кода:
package com.labex;
// Interface for message functionality
public interface IMessage {
// Method signature for displaying a message
void doMessage();
}
Данный интерфейс определяет базовую структуру для любого класса, который хочет реализовать функциональность сообщений. Метод doMessage() является абстрактным методом, который будет реализован конкретными классами сообщений.
Создайте класс MessageCN
В этом шаге вы создадите класс MessageCN, который реализует интерфейс IMessage. Этот класс будет иметь атрибут msg и методы get/set. Он также переопределит метод doMessage(), чтобы вывести строку "你好,Labex".
- Создайте новый Java-файл с именем
MessageCN.javaв пакетеcom.labex. - Внутри файла определите класс
MessageCNс помощью следующего кода:
package com.labex;
// Implementation of the IMessage interface for Chinese messages
public class MessageCN implements IMessage {
private String msg; // Переменная для хранения сообщения
// Getter method for retrieving the message
public String getMsg() {
return msg;
}
// Setter method for setting the message
public void setMsg(String msg) {
this.msg = msg;
}
// Implementation of the doMessage method from the IMessage interface
@Override
public void doMessage() {
// Print a greeting message in Chinese
System.out.println("你好," + msg);
}
}
Класс MessageCN реализует интерфейс IMessage и предоставляет реализацию для метода doMessage(), который выводит приветственное сообщение на китайском языке.
Создайте класс MessageEN
В этом шаге вы создадите класс MessageEN, который также реализует интерфейс IMessage. Этот класс будет иметь атрибут msg и методы get/set. Он также переопределит метод doMessage(), чтобы вывести строку "hello,Labex".
- Создайте новый Java-файл с именем
MessageEN.javaв пакетеcom.labex. - Внутри файла определите класс
MessageENс помощью следующего кода:
package com.labex;
// Implementation of the IMessage interface for English messages
public class MessageEN implements IMessage {
private String msg; // Переменная для хранения сообщения
// Getter method for retrieving the message
public String getMsg() {
return msg;
}
// Setter method for setting the message
public void setMsg(String msg) {
this.msg = msg;
}
// Implementation of the doMessage method from the IMessage interface
@Override
public void doMessage() {
// Print a greeting message in English
System.out.println("Hello, " + msg);
}
}
Класс MessageEN реализует интерфейс IMessage и предоставляет реализацию для метода doMessage(), который выводит приветственное сообщение на английском языке.
Создайте файл конфигурации applicationContext.xml
В этом шаге вы создадите файл конфигурации applicationContext.xml, чтобы настроить JavaBeans, созданные выше, и передать информацию об атрибуте msg в конфигурации.
- Создайте новый файл с именем
applicationContext.xmlв директорииsrc/main/resources. - Внутри файла добавьте следующую 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">
<!-- Конфигурация для бита сообщения на китайском языке -->
<bean id="messageCN" class="com.labex.MessageCN">
<!-- Установите свойство 'msg' бита MessageCN в "Labex" -->
<property name="msg" value="Labex"/>
</bean>
<!-- Конфигурация для бита сообщения на английском языке -->
<bean id="messageEN" class="com.labex.MessageEN">
<!-- Установите свойство 'msg' бита MessageEN в "Labex" -->
<property name="msg" value="Labex"/>
</bean>
</beans>
Данный файл конфигурации настраивает биты MessageCN и MessageEN и инициализирует их свойства msg значением "Labex".
Создайте класс TestGreeting
В этом шаге вы создадите класс TestGreeting и добавите тестовый метод testGreeting(), чтобы выполнить тестовую операцию.
- Создайте новый Java-файл с именем
TestGreeting.javaв пакетеcom.labex. - Внутри файла определите класс
TestGreetingс помощью следующего кода:
package com.labex;
import org.junit.Test;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class TestGreeting {
@Test
public void testGreeting() {
// Загрузите контекст Spring-приложения из XML-файла конфигурации
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
// Получите биты сообщений из контекста
IMessage messageCN = (IMessage) context.getBean("messageCN"); // Китайский бин сообщения
IMessage messageEN = (IMessage) context.getBean("messageEN"); // Английский бин сообщения
// Вызовите метод 'doMessage' на китайском бине сообщений
messageCN.doMessage();
// Вызовите метод 'doMessage' на английском бине сообщений
messageEN.doMessage();
context.close();
}
}
Класс TestGreeting загружает контекст Spring-приложения из файла applicationContext.xml, получает биты MessageCN и MessageEN, а затем вызывает их методы doMessage(), чтобы протестировать функциональность.
Теперь вы завершили все шаги по созданию проекта по переключению китайско-английской информации с использованием IoC. Теперь вы можете запустить тест и увидеть ожидаемый вывод.
- Запустите тест:
cd ~/project/SpringGreeting/
mvn test
Тест должен пройти, и вы должны увидеть следующий вывод:
[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] ------------------------------------------------------------------------
Резюме
Поздравляем! Вы завершили этот проект. Вы можете практиковаться в более многих лабораторных работах в LabEx, чтобы улучшить свои навыки.



