介绍
在本项目中,你将学习如何使用 Spring IoC(控制反转)容器构建一个员工管理系统。目标是使用 Spring IoC 容器从配置文件中提取员工信息,并将其存储在列表集合中,从中可以检索并打印员工信息。
👀 预览
-------------------------------------------------------
T E S T S
-------------------------------------------------------
Running org.labex.TestEmployeeSystem
2024年5月11日 上午2:28:53 org.labex.service.EmployeeServiceImpl addEmployee
信息: 进入addEmployee()方法
2024年5月11日 上午2:28:53 org.labex.service.EmployeeServiceImpl addEmployee
信息: 进入addEmployee()方法
2024年5月11日 上午2:28:53 org.labex.service.EmployeeServiceImpl addEmployee
信息: 进入addEmployee()方法
2024年5月11日 上午2:28:53 org.labex.service.EmployeeServiceImpl addEmployee
信息: 进入addEmployee()方法
2024年5月11日 上午2:28:53 org.labex.service.EmployeeServiceImpl addEmployee
信息: 进入addEmployee()方法
2024年5月11日 上午2:28:53 org.labex.service.EmployeeServiceImpl getAllEmployees
信息: 进入getAllEmployees()方法
员工 [员工ID=000001, 员工姓名=John Doe, 员工性别=男, 员工生日=1993-11-06, 员工入职日期=2018-10-11, 用户ID=1]
员工 [员工ID=000021, 员工姓名=Jane Smith, 员工性别=女, 员工生日=1990-07-16, 员工入职日期=2019-10-21, 用户ID=4]
员工 [员工ID=000022, 员工姓名=Alice Johnson, 员工性别=女, 员工生日=1993-02-11, 员工入职日期=2019-12-27, 用户ID=12]
员工 [员工ID=000035, 员工姓名=Bob Brown, 员工性别=男, 员工生日=1991-06-23, 员工入职日期=2020-05-06, 用户ID=19]
员工 [员工ID=000066, 员工姓名=Mary Taylor, 员工性别=女, 员工生日=1997-12-21, 员工入职日期=2021-01-03, 用户ID=20]
运行的测试: 1, 失败: 0, 错误: 0, 跳过: 0, 耗时: 1.499秒
🎯 任务
在本项目中,你将学习:
- 如何实现
IEmployeeService接口以处理与员工相关的操作 - 如何创建
EmployeeServiceImpl类以提供IEmployeeService接口的实现 - 如何配置 Spring IoC 容器以启用基于注解的包扫描
- 如何实现
test()方法以从 Spring IoC 容器中检索员工信息并打印
🏆 成果
完成本项目后,你将能够:
- 使用 Spring IoC 容器管理员工数据
- 使用注解实现服务接口及其实现
- 使用 XML 配置文件配置 Spring IoC 容器
- 从 Spring IoC 容器中检索并打印员工信息
实现 IEmployeeService 接口
在这一步中,你将学习如何实现 IEmployeeService 接口。请按照以下步骤完成此步骤:
打开位于
EmployeeSystemIoC/src/main/java/org/labex/service目录下的IEmployeeService.java文件。在
IEmployeeService接口中声明两个方法: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 类
在这一步中,你将学习如何实现 EmployeeServiceImpl 类,它是 IEmployeeService 接口的实现。
在
EmployeeSystemIoC/src/main/java/org/labex/service目录下创建一个名为EmployeeServiceImpl.java的新文件。实现
EmployeeServiceImpl类,并使其实现IEmployeeService接口。使用
@Service注解对EmployeeServiceImpl类进行标注。全局声明一个静态的
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文件。将以下 XML 命名空间声明添加到
<beans>元素中: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"/>
<!-- 在此处添加更多员工 bean -->
</beans>
实现测试方法
在这一步中,你将学习如何在 TestEmployeeSystem.java 文件中实现 test() 方法。
打开位于
EmployeeSystemIoC/src/test/java/org/labex目录下的TestEmployeeSystem.java文件。实现
test()方法:- 创建一个
ClassPathXmlApplicationContext对象并加载applicationContext.xml文件。 - 从 Spring IoC 容器中获取
EmployeeServiceImplbean。 - 从 Spring IoC 容器中获取员工 bean,并使用
addEmployee()方法将它们添加到EmployeeServiceImpl中。 - 通过调用
EmployeeServiceImplbean 的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);
// 从上下文中获取员工 bean
Employee emp1 = (Employee) context.getBean("emp1");
employeeService.addEmployee(emp1);
Employee emp2 = (Employee) context.getBean("emp2");
employeeService.addEmployee(emp2);
// 在此处添加更多员工 bean
// 打印员工信息
for (Employee e : employeeService.getAllEmployees()) {
System.out.println(e.toString());
}
}
}
现在,你已经完成了 Spring IoC 员工管理系统的实现。你可以运行 test() 方法来验证应用程序的功能。
- 运行测试:
cd ~/project/EmployeeSystemIoC/
mvn test
输出应类似于以下内容:
Employee() 方法
2024年5月11日 上午2:28:53 org.labex.service.EmployeeServiceImpl addEmployee
总结
恭喜你!你已经完成了这个项目。你可以在 LabEx 中练习更多实验来提升你的技能。



