はじめに
このプロジェクトでは、Spring IoC(制御の逆転)コンテナを使用して従業員管理システムを構築する方法を学びます。目的は、Spring IoC コンテナを使用して構成ファイルから従業員情報を抽出し、リストコレクションに保存し、そこから従業員情報を取得して表示することです。
👀 プレビュー
-------------------------------------------------------
T E S T S
-------------------------------------------------------
Running org.labex.TestEmployeeSystem
May 11, 2024 2:28:53 AM org.labex.service.EmployeeServiceImpl addEmployee
INFO: Entering addEmployee() method
May 11, 2024 2:28:53 AM org.labex.service.EmployeeServiceImpl addEmployee
INFO: Entering addEmployee() method
May 11, 2024 2:28:53 AM org.labex.service.EmployeeServiceImpl addEmployee
INFO: Entering addEmployee() method
May 11, 2024 2:28:53 AM org.labex.service.EmployeeServiceImpl addEmployee
INFO: Entering addEmployee() method
May 11, 2024 2:28:53 AM org.labex.service.EmployeeServiceImpl addEmployee
INFO: Entering addEmployee() method
May 11, 2024 2:28:53 AM org.labex.service.EmployeeServiceImpl getAllEmployees
INFO: Entering getAllEmployees() method
Employees [employeeId=000001, employeeName=John Doe, employeeSex=Male, employeeBirthday=1993-11-06, employeeHiredate=2018-10-11, userId=1]
Employees [employeeId=000021, employeeName=Jane Smith, employeeSex=Female, employeeBirthday=1990-07-16, employeeHiredate=2019-10-21, userId=4]
Employees [employeeId=000022, employeeName=Alice Johnson, employeeSex=Female, employeeBirthday=1993-02-11, employeeHiredate=2019-12-27, userId=12]
Employees [employeeId=000035, employeeName=Bob Brown, employeeSex=Male, employeeBirthday=1991-06-23, employeeHiredate=2020-05-06, userId=19]
Employees [employeeId=000066, employeeName=Mary Taylor, employeeSex=Female, employeeBirthday=1997-12-21, employeeHiredate=2021-01-03, userId=20]
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.499 sec
🎯 タスク
このプロジェクトでは、以下を学びます。
- 従業員関連の操作を処理するために
IEmployeeServiceインターフェイスを実装する方法 IEmployeeServiceインターフェイスの実装を提供するためのEmployeeServiceImplクラスを作成する方法- アノテーションベースのパッケージスキャニングを有効にするための Spring IoC コンテナを構成する方法
- Spring IoC コンテナから従業員情報を取得して表示するための
test()メソッドを実装する方法
🏆 成果
このプロジェクトを完了すると、以下のことができるようになります。
- Spring IoC コンテナを使用して従業員データを管理する
- アノテーションを使用してサービスインターフェイスとその実装を実装する
- XML 構成ファイルを使用して Spring IoC コンテナを構成する
- Spring IoC コンテナから従業員情報を取得して表示する
IEmployeeService インターフェイスを実装する
このステップでは、IEmployeeService インターフェイスを実装する方法を学びます。以下の手順に従ってこのステップを完了します。
EmployeeSystemIoC/src/main/java/org/labex/serviceディレクトリにあるIEmployeeService.javaファイルを開きます。IEmployeeServiceインターフェイスに 2 つのメソッドを宣言します。addEmployee:このメソッドはEmployeeオブジェクトをパラメータとして受け取り、ブール値を返します。これは、従業員オブジェクトをリストに追加するために使用されます。getAllEmployees:このメソッドにはパラメータがなく、Listを返します。これは、すべての従業員情報を取得するために使用されます。
あなたの IEmployeeService.java ファイルはこのようになるはずです。
package org.labex.service;
import org.labex.pojo.Employee;
import java.util.List;
public interface IEmployeeService {
boolean addEmployee(Employee employee);
List<Employee> getAllEmployees();
}
EmployeeServiceImpl クラスを実装する
このステップでは、IEmployeeService インターフェイスの実装である EmployeeServiceImpl クラスを実装する方法を学びます。
EmployeeSystemIoC/src/main/java/org/labex/serviceディレクトリにEmployeeServiceImpl.javaという新しいファイルを作成します。EmployeeServiceImplクラスを実装し、IEmployeeServiceインターフェイスを実装させます。EmployeeServiceImplクラスに@Serviceアノテーションを付けます。静的な
Listコレクションをグローバルに宣言し、引数のないコンストラクタでコレクションオブジェクトを割り当てます。addEmployee()とgetAllEmployees()メソッドを実装します。addEmployee()メソッドでは、logger.info()メソッドを使用して実行プロセスをログに記録します。getAllEmployees()メソッドでは、logger.info()メソッドを使用して実行プロセスをログに記録します。
あなたの EmployeeServiceImpl.java ファイルはこのようになるはずです。
package org.labex.service;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.labex.pojo.Employee;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
@Service
public class EmployeeServiceImpl implements IEmployeeService {
private static List<Employee> employees;
private static final Log logger = LogFactory.getLog(EmployeeServiceImpl.class);
public EmployeeServiceImpl() {
employees = new ArrayList<>();
}
@Override
public boolean addEmployee(Employee employee) {
logger.info("Entering addEmployee() method");
return employees.add(employee);
}
@Override
public List<Employee> getAllEmployees() {
logger.info("Entering getAllEmployees() method");
return employees;
}
}
Spring IoC コンテナを構成する
このステップでは、アノテーションベースのパッケージスキャニングを有効にするために Spring IoC コンテナを構成する方法を学びます。
EmployeeSystemIoC/src/main/resourcesディレクトリにあるapplicationContext.xmlファイルを開きます。<beans>要素に以下の XML 名前空間宣言を追加します。xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"<context:component-scan>要素を追加して、org.labexパッケージに対するアノテーションベースのパッケージスキャニングを有効にします。
あなたの applicationContext.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"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:c="http://www.springframework.org/schema/c"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
<!-- アノテーションによるコンポーネントのスキャンを有効にする -->
<context:component-scan base-package="org.labex"/>
<!-- 従業員情報 -->
<bean id="emp1" class="org.labex.pojo.Employee"
c:employeeId="000001" c:employeeName="John Doe" c:employeeSex="Male"
c:employeeBirthday="1993-11-06" c:employeeHiredate="2018-10-11" c:userId="1"/>
<bean id="emp2" class="org.labex.pojo.Employee"
c:employeeId="000021" c:employeeName="Jane Smith" c:employeeSex="Female"
c:employeeBirthday="1990-07-16" c:employeeHiredate="2019-10-21" c:userId="4"/>
<!-- ここにさらに従業員のビーンを追加します -->
</beans>
テスト メソッドを実装する
このステップでは、TestEmployeeSystem.java ファイルの test() メソッドを実装する方法を学びます。
EmployeeSystemIoC/src/test/java/org/labexディレクトリにあるTestEmployeeSystem.javaファイルを開きます。test()メソッドを実装します。ClassPathXmlApplicationContextオブジェクトを作成し、applicationContext.xmlファイルを読み込みます。- Spring IoC コンテナから
EmployeeServiceImplビーンを取得します。 - Spring IoC コンテナから従業員のビーンを取得し、
addEmployee()メソッドを使用してEmployeeServiceImplに追加します。 EmployeeServiceImplビーンのgetAllEmployees()メソッドを呼び出して、すべての従業員情報を表示します。
あなたの TestEmployeeSystem.java ファイルはこのようになるはずです。
package org.labex;
import org.junit.Test;
import org.labex.pojo.Employee;
import org.labex.service.EmployeeServiceImpl;
import org.labex.service.IEmployeeService;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class TestEmployeeSystem {
@Test
public void test(){
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
IEmployeeService employeeService = context.getBean(EmployeeServiceImpl.class);
// コンテキストから従業員のビーンを取得する
Employee emp1 = (Employee) context.getBean("emp1");
employeeService.addEmployee(emp1);
Employee emp2 = (Employee) context.getBean("emp2");
employeeService.addEmployee(emp2);
// ここにさらに従業員のビーンを追加する
// 従業員情報を表示する
for (Employee e : employeeService.getAllEmployees()) {
System.out.println(e.toString());
}
}
}
これで、Spring IoC 従業員管理システムの実装が完了しました。アプリケーションの機能を確認するには、test() メソッドを実行します。
- テストを実行する:
cd ~/project/EmployeeSystemIoC/
mvn test
出力は以下に似たものになるはずです。
y 11, 2024 2:28:53 AM org.labex.service.EmployeeServiceImpl addEmployee
INFO: Entering addEmployee() method
May 11, 2024 2:28:53 AM org.labex.service.EmployeeServiceImpl addEmployee
INFO: Entering addEmployee() method
May 11, 2024 2:28:53 AM org.labex.service.EmployeeServiceImpl addEmployee
INFO: Entering addEmployee() method
May 11, 2024 2:28:53 AM org.labex.service.EmployeeServiceImpl addEmployee
INFO: Entering addEmployee() method
May 11, 2024 2:28:53 AM org.labex.service.EmployeeServiceImpl addEmployee
まとめ
おめでとうございます!このプロジェクトを完了しました。実力を向上させるために、LabEx でさらに多くの実験を行って練習してください。



