本文最后更新于 705 天前,其中的信息可能已经有所发展或是发生改变。
前言
这段时间学校的实训课程进入了第二阶段,开始学习Spring框架,并且老师布置了每日作业,我自己的歇息效率还不错,可以腾出一些时间来把学习的内容记下来,顺便梳理一些学到的知识,巩固记忆
本次作业的代码和文件已托管到Github
作业需求
- 在IOC容器中注入teacher对象
- 在IOC容器中注入student对象
- 为teacher对象依赖注入属性数据,数据内容任意
- 为teacher对象依赖注入属性数据,数据内容任意
- 完成上述需求的测试,并完成学生交作业方法的测试
老师给出了两个类的代码
Teacher
package top.psjj.po;
import java.util.List;
/**
* @Auther: 胖叔讲java
*/
public class Teacher {
//id
private int id;
//教师名字
private String tname;
//教师爱好
private List<String> hobbys;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getTname() {
return tname;
}
public void setTname(String tname) {
this.tname = tname;
}
public List<String> getHobbys() {
return hobbys;
}
public void setHobbys(List<String> hobbys) {
this.hobbys = hobbys;
}
@Override
public String toString() {
return "Teacher{" +
"id=" + id +
", tname='" + tname + '\'' +
", hobbys=" + hobbys +
'}';
}
}
Student
package top.psjj.po;
/**
* @Auther: 胖叔讲java
*/
public class Student {
//学生id
private int id;
//学生名字
private String sname;
//学生的班主任
private Teacher teacher;
//交作业方法
public void commitJob(){
System.out.println(this.sname+"已经把作业提交给"+teacher.getTname()+"老师");
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getSname() {
return sname;
}
public void setSname(String sname) {
this.sname = sname;
}
public Teacher getTeacher() {
return teacher;
}
public void setTeacher(Teacher teacher) {
this.teacher = teacher;
}
@Override
public String toString() {
return "Student{" +
"id=" + id +
", sname='" + sname + '\'' +
", teacher=" + teacher +
'}';
}
}
分析需求
OK,那么经过观察老师给出的两个类的结构,有几点需要注意
- Teacher类里的hobbys属性是一个数组,那么再之后写构造方法的时候需要注意
- Student类里引用了Teacher类作为一个属性,那么使用IOC来自动联系并构造他们这便是本次作业的核心需求
- 两个类里都重写了ToString方法,所以最后测试时老师肯定希望能输出他们的数据
- Student类里有个commitJob的方法,老师希望测试时调用
构造方法
因为需求简单,并且没有使用工厂的必要,所以我这次采用了setter方法注入数据
在Student类的teacher属性里参照之前的Teacher来进行构造
<?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="Teacher" class="bean.Teacher">
<property name="id" value="1"></property>
<property name="hobbys">
<array>
<value>唱</value>
<value>跳</value>
<value>rap</value>
<value>篮球</value>
</array>
</property>
<property name="tname" value="坤坤"></property>
</bean>
<bean id="Student" class="bean.Student">
<property name="teacher" ref="Teacher"></property>
<property name="id" value="1"></property>
<property name="sname" value="只因哥"></property>
</bean>
</beans>
编写测试方法
在Student类的toString中,会输出老师属性的数据,所以只需要采用学生类的toString方法即可
这里测试类直接命名为Test其实不好,和junit的Test类重名了
public class Test {
@org.junit.Test
public void Teststu(){
ApplicationContext act = new ClassPathXmlApplicationContext("applicationContext.xml");
Student student1 = (Student) act.getBean("Student");
System.out.println(student1.toString());
student1.commitJob();
}
}
结果
测试完成
我的评价是好好好