结合现实例子带你入门IOC

IOC全称控制反转(Inversion of Control)

 

IOC是什么

我们以一个故事来介绍IOC。

一天,你想喝杯果汁。你该怎么做?按照正常的搞法是去买杯果汁或者自己做杯果汁放入自己的杯子里,然后你就可以开始喝了。也就是

Juice juice = new Juice(400,"orange");
juice.drink();

但是,我们的IOC就不同了,他的理念是:让别人为你服务

你只需要将果汁杯摆在那,然后别人就会给他倒好果汁,你只需要喝就行了。

public class People {
    private Juice juice;


    @Test
    public void test(){
        juice = new Juice(400,"orange");
        juice.drink();
    }
    public People(Juice juice) {
        this.juice = juice;
    }
}

 

IOC的几种依赖注入方式

(即怎么把他管理的“类”倒到你的杯子里)

1、构造方法注入

public People(Juice juice) {
    this.juice = juice;
}

  这就好比你一进门,为你服务的人就已经根据你之前设定好了的给你倒好了果汁

 

2、setter方法注入

这个怎么写就不多说了,直接在代码中设置一个对应的setter方法就行了。就好比你进了门把杯子一摆,说要喝什么果汁就喝什么果汁

 

3、接口注入

不怎么用了,不再多啰嗦。个人觉得你们也没必要多研究这个。

 

IOC的类的管理

这里的为你服务的人我们在spring中称为IOC Service Provider。他的职责是:业务对象的构建管理和业务对象间的依赖绑定。

这个服务的人可不是天上派下来为你服务的,就好比你想享受就得去请个保姆(创建applicationContext.xml文件)。

你请了保姆之后她可不知道你给她个眼神是想让她干什么,这个时候你得先告诉她你的每个眼神对应的是什么(依赖对象的绑定,如下文)

<?xml version="1.0" encoding="UTF-8"?>

<beans

   xmlns="http://www.springframework.org/schema/beans"

   xmlns:p="http://www.springframework.org/schema/p"

   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="juice" class="ioc.Juice">
       <property name="capacity" value="400"/>
       <property name="flavor" value="orange"/>
    </bean>

   <bean id="people" class="ioc.People">
       <constructor-arg name="juice" ref="juice"/>
   </bean>

</beans>

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章