spring IOC容器

1爲什麼使用spring
我們知道任何一個應用都需要用到多個類(並不是所有的應用都像Hello the world ),既然有多個類,那麼久涉及到了多個之間的協作,多個類之間如何協作呢,當然是靠通信了(就像我們人與人之間)。比如我們開發了一款軟件,比如eclipse。我們知道eclipse有若干個組成部分(面板1,面板2,面板3,按鈕1,按鈕2,按鈕3,下拉菜單1,下拉菜單2,下拉菜單3,啊好痛苦寫不下去了),我們將每一個組成部分對應一個類。好了eclipse應該是這樣的。

public class Eclipse{
    Panel1 panel1;
    Panel2 panel2;
    Panel3 panel3;
    ....
    ...
    ..
    .

}

好了,我們該啓動一下這個Eclipse了。

public class Boot{
    public static void main(String[] argv){
        Panel1 p1=new Panel1(......);
        Panel2 p2=new Panel2(.....);
        Panel3 p3=new Panel3(.....);
        .....
        Eclipse eclipse=new Eclipse();
        eclipse.panel1=p1;
        eclipse.panel2=p2;
        eclipse.panel3=p3;
        .....
        ..
        .
    }
}

如果你是寫Boot那個類的程序員,我不知道你會有什麼想法,我只會罵娘,靠這段代碼如此簡單, 只是把eclipse的各個面板,按鈕等等實例化了,然後傳遞給Eclipse實例,然後自己寫代碼寫到手抽筋。好了,爲了不讓你寫到手抽筋,你可以使用spring了, 在大家開發的時候你可以告訴他們,讓他們每寫好一個類,就到配置文件中配置一下。然後:

public class Boot{
public static void main(String[] argv){
ApplicationContext context=new ApplicationContext(....);
Eclipse eclipse=(Eclipse)context.getBean("Eclipse");
}
}

高興了吧,雖然做的事情依舊沒有技術含量,但是至少不用寫代碼,寫到手抽筋了。
好了前面的例子在扯淡,Eclipse根本不會設計成這個爛德行,spring的精髓也並不是讓你把工作量分擔給同事。
spring的精髓是IOC容器。生麼是IOC容器呢?就是對IOC規範的實現
就是依賴注入這種規範的實現。這就好比我們運行java代碼都需要jvm,但我們都知道jvm只是一個規範,而我們用到hotspot,jrocket等等纔是jvm的具體實現。
好了生麼是IOC:Inversion of Control,控制反轉,有時候也叫DI,dependence injection,依賴注入。
好了,你只需要記住ioc,di只是個名字而已,就和某人叫xxx一樣。好了,現在講一下ioc,和di的精髓,就是我們將一個類寫好了之後,然後在spring的配置文件中進行配置。當我們在某個程序段中需要用到某個類的一個實例(並不是所有的類都是無參的,並不是所有的類的實例你都會初始化),你直接通過這個實例對應的名稱就可以了。比如就像我上面的那個Eclipse的例子。spring IOC容器,就相當於一個巨大的Map

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