学习Spring的第一天IOC+实例化+依赖注入
本文最后更新于 693 天前,其中的信息可能已经有所发展或是发生改变。

前言

这段时间学校的实训课程进入了第二阶段,开始学习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();
    }
}

结果

测试完成

当前文章: 《学习Spring的第一天IOC+实例化+依赖注入》
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。

评论

  1. 辣脆姜丝
    Windows Edge
    2 年前
    2022-12-25 20:03:07

    我的评价是好好好

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇