Java练习(六):Spring应用之IoC (简单的Student, Teacher工程)

目录

1. 背景概念

2. 简单的Student-Teacher工程,演示Spring中Ioc和DI的基本用法

2.1 maven系统的配置文件:pom.xml

2.2 bean的配置文件: bean_ioc.xml

2.3 类代码:Student类,Teacher类

2.4 测试类(程序入口)


1. 背景概念

(1)IoC控制反转

Spring通过一种称作控制反转IoC的技术促进了松耦合。

当应用了IoC, 一个对象依赖的其他对象会通过被动的方式传递进来,而不是这个对象自己查找或创建的。

(2)IoC容器的功能

实例化,初始化组件,装配组件依赖关系,负责组件生命周期管理。

2. 简单的Student-Teacher工程,演示Spring中Ioc和DI的基本用法

2.1 maven系统的配置文件:pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.my.test</groupId>
  <artifactId>SpringIoCDemo</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  
  <dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>5.3.3</version>
        </dependency>        
        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjweaver</artifactId>
            <version>1.9.4</version>
        </dependency>
    </dependencies>  
</project>

2.2 bean的配置文件: bean_ioc.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:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
        https://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
        https://www.springframework.org/schema/context/spring-context.xsd">

    <bean id="student" class="com.my.test.Student">  
        <property name="name" value="Lucky"/>  
        <property name="teacher" ref="teacher"/>  
    </bean>  
  
    <bean id="teacher" class="com.my.test.Teacher">  
        <property name="name" value="Sheryl"/>  
    </bean>  
   
</beans>  

2.3 类代码:Student类,Teacher类

(1)Student类

package com.my.test;

public class Student {
    
    private String name;
    private Teacher teacher;
    
    public String getName() {
        return this.name;
    }
    public void setName(String name) {
        this.name = name;
    }
    
    public Teacher getTeacher() {
        return this.teacher;
    }
    public void setTeacher(Teacher teacher) {
        this.teacher = teacher;
    }

}

(2)Teacher类

package com.my.test;

public class Teacher {
    private String name;
    
    public String getName() {
        return this.name;
    }
    public void setName(String name) {
        this.name = name;
    }

}

2.4 测试类(程序入口)

package com.my.test.demo;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.my.test.Student;
import com.my.test.Teacher;

public class SpringIoCDemoTest {

    public static void main(String[] args) {
        //跟spring要实例,补充:spring默认是单例模式
        ApplicationContext context = new ClassPathXmlApplicationContext("bean_ioc.xml");
        Student stu1 = (Student) context.getBean("student");
        Student stu2 = (Student) context.getBean("student");
        Teacher teacher = (Teacher) context.getBean("teacher");
        
        //下方两个语句输出结果一样。在Student的实例中,引用了Teacher实例,由spring来做
        System.out.println("学生1姓名是:" + stu1.getName() + ", 老师是:" + stu1.getTeacher().getName());
        System.out.println("学生2姓名是:" + stu2.getName() + ", 老师是:" + stu2.getTeacher().getName());
        
        //直接打印Teacher的实例,同样是由spring来生成
        System.out.println("老师姓名是:" + teacher.getName());
    }

}

输出结果:

学生1姓名是:Lucky, 老师是:Sheryl
学生2姓名是:Lucky, 老师是:Sheryl
老师姓名是:Sheryl

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值