IoC を使った中英情報切り替え

JavaBeginner
オンラインで実践に進む

はじめに

このプロジェクトでは、制御の逆転(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] ------------------------------------------------------------------------

🎯 タスク

このプロジェクトでは、以下を学びます。

  • 抽象的な doMessage() メソッドを持つ IMessage インターフェイスを作成する方法
  • MessageCNMessageEN の 2 つの具体的なクラスで IMessage インターフェイスを実装する方法
  • applicationContext.xml ファイルを使用してメッセージビーンを構成する方法
  • TestGreeting クラスでメッセージ切り替え機能をテストする方法

🏆 成果

このプロジェクトを完了すると、以下のことができるようになります。

  • メッセージ機能の実装をメインアプリケーションから解離するために IoC デザインパターンを使用する
  • Spring フレームワークを使用してメッセージビーンを構成および管理する
  • メッセージ切り替えシステムの機能を検証するための単体テストを書く

IMessage インターフェイスを作成する

このステップでは、返り値のない doMessage() と呼ばれる抽象メソッドを含む IMessage インターフェイスを作成します。

  1. com.labex パッケージ内に新しい Java ファイル IMessage.java を作成します。
  2. ファイル内で、次のコードを使用して IMessage インターフェイスを定義します。
package com.labex;

// メッセージ機能のためのインターフェイス
public interface IMessage {
    // メッセージを表示するためのメソッドシグネチャ
    void doMessage();
}

このインターフェイスは、メッセージ機能を実装したい任意のクラスの基本構造を定義します。doMessage() メソッドは、具体的なメッセージクラスによって実装される抽象メソッドです。

MessageCN クラスを作成する

このステップでは、IMessage インターフェイスを実装する MessageCN クラスを作成します。このクラスは msg 属性を持ち、get/set メソッドを提供します。また、doMessage() メソッドをオーバーライドして、「你好,Labex」という文字列を出力します。

  1. com.labex パッケージ内に新しい Java ファイル MessageCN.java を作成します。
  2. ファイル内で、次のコードを使用して MessageCN クラスを定義します。
package com.labex;

// 中国語メッセージ用の IMessage インターフェイスの実装
public class MessageCN implements IMessage {
    private String msg; // メッセージを格納する変数

    // メッセージを取得するための Getter メソッド
    public String getMsg() {
        return msg;
    }

    // メッセージを設定するための Setter メソッド
    public void setMsg(String msg) {
        this.msg = msg;
    }

    // IMessage インターフェイスの doMessage メソッドの実装
    @Override
    public void doMessage() {
        // 中国語の挨拶メッセージを出力する
        System.out.println("你好," + msg);
    }
}

MessageCN クラスは IMessage インターフェイスを実装し、doMessage() メソッドの実装を提供しており、中国語の挨拶メッセージを出力します。

MessageEN クラスを作成する

このステップでは、IMessage インターフェイスを実装する MessageEN クラスを作成します。このクラスは msg 属性を持ち、get/set メソッドを提供します。また、doMessage() メソッドをオーバーライドして、「hello,Labex」という文字列を出力します。

  1. com.labex パッケージ内に新しい Java ファイル MessageEN.java を作成します。
  2. ファイル内で、次のコードを使用して MessageEN クラスを定義します。
package com.labex;

// 英語メッセージ用の IMessage インターフェイスの実装
public class MessageEN implements IMessage {
    private String msg; // メッセージを格納する変数

    // メッセージを取得するための Getter メソッド
    public String getMsg() {
        return msg;
    }

    // メッセージを設定するための Setter メソッド
    public void setMsg(String msg) {
        this.msg = msg;
    }

    // IMessage インターフェイスの doMessage メソッドの実装
    @Override
    public void doMessage() {
        // 英語の挨拶メッセージを出力する
        System.out.println("Hello, " + msg);
    }
}

MessageEN クラスは IMessage インターフェイスを実装し、doMessage() メソッドの実装を提供しており、英語の挨拶メッセージを出力します。

applicationContext.xml 構成ファイルを作成する

このステップでは、上で作成した JavaBeans を構成し、構成内の msg 属性情報を渡すための applicationContext.xml 構成ファイルを作成します。

  1. src/main/resources ディレクトリ内に新しいファイル applicationContext.xml を作成します。
  2. ファイル内に、次の 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">
        <!-- MessageCN ビーンの 'msg' プロパティを "Labex" に設定 -->
        <property name="msg" value="Labex"/>
    </bean>

    <!-- 英語メッセージビーンの構成 -->
    <bean id="messageEN" class="com.labex.MessageEN">
        <!-- MessageEN ビーンの 'msg' プロパティを "Labex" に設定 -->
        <property name="msg" value="Labex"/>
    </bean>

</beans>

この構成ファイルは、MessageCNMessageEN ビーンを設定し、それらの msg プロパティを値 "Labex" で初期化します。

TestGreeting クラスを作成する

このステップでは、TestGreeting クラスを作成し、テスト操作を実行するための testGreeting() と呼ばれるテストメソッドを追加します。

  1. com.labex パッケージ内に新しい Java ファイル TestGreeting.java を作成します。
  2. ファイル内で、次のコードを使用して TestGreeting クラスを定義します。
package com.labex;

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

public class TestGreeting {

    @Test
    public void testGreeting() {
        // XML 構成ファイルから Spring アプリケーションコンテキストを読み込む
        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 クラスは applicationContext.xml ファイルから Spring アプリケーションコンテキストを読み込み、MessageCNMessageEN ビーンを取得し、その後それらの doMessage() メソッドを呼び出して機能をテストします。

これで、IoC を通じた中英情報切り替えプロジェクトを作成するすべての手順が完了しました。これでテストを実行して、期待される出力を確認できます。

  1. テストを実行する:
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 でさらに多くの実験を行って練習してください。

✨ 解答を確認して練習✨ 解答を確認して練習✨ 解答を確認して練習✨ 解答を確認して練習✨ 解答を確認して練習