結合現實例子帶你入門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>

 

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