1.IOC–容器

1.1 应用场景

IOC – 用于集中封装、组织、管理对象,该技术用于在开发中,降低代码的耦合度,使更新替换的效率更高。

IOC思想:将开发者主动new 生成对象模式 -> 由IOC工厂统一提供对象的模式

DI:依赖注入,对于IOC工厂中不同的Bean之间绑定依赖关系

1.2 实现方式

  1. 通过配置文件的形式实现 Bean的注册

    1
    2
    3
    4
    5
    6
    7
    <?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 name="student" class="com.IOC.Student" scope="singleton" ></bean>
    </beans>
  2. 通过配置文件形式实现 依赖注入

1
2
3
4
5
6
7
8
9
10
<?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 name="teacher" class="com.IOC.Teacher"></bean>
<bean name="student" class="com.IOC.Student" scope="singleton" >
<property name="teacher" ref="teacher"></property>
</bean>
</beans>

注意点:

  • 注入的类需要先注册为Bean,IOC才能从工厂中找出这个类并注入依赖关系

  • 被注入的类必需要重写set方法,以便IOC使用

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    public class Student {
    private Teacher teacher;

    public void hello(){
    System.out.println("hello");
    }

    public void setTeacher(Teacher teacher){
    this.teacher = teacher;

    }
    }
  • 使用property标签进行依赖注入,ref-> 注入的类,若注入为常量,则使用value属性

  1. 使用注解开发模式,依赖注入使用autowired注解实现自动装载
    1
    2
    3
    4
    5
    6
    7
    @Configuration
    public class MainConfiguration {
    @Bean
    public Student getStudent(){
    return new Student();
    }
    }