之前在學習ssh的時候開始接觸spring這個框架。因為一直在學習新的東西,沒有對這部分的學習做總結。最近,也一直在使用spring,只是沒有比較深入的去了解,也就是只是停留在使用這個層面上。從這篇部落格開始,對spring部分的學習做一些記錄。從其核心內容開始吧,這篇部落格就是ioc的了解。
ioc(inversion of control),大部分翻譯為「控制反轉」。剛接觸這個概念的話,絕對會不知所云。我們知道,通常我們在乙個類呼叫另乙個類的時候,需要在**裡例項化乙個物件出來。這怎麼理解呢?就是說,當乙個類需要另乙個類時,它自己要去new另乙個類的物件。即,它要維護自己和其他物件之間的呼叫關係。那麼,ioc的意思就是將維護呼叫關係這個工作抽出來,交給ioc容器去承擔了。也就是「控制反轉」!可能這麼說你還是不太理解,看個故事吧。
苦逼程式設計師應該大部分都要租房子的經歷,通常我們怎麼找房子的呢?牆壁上的小廣告,趕集網,58同城一條一條記錄的尋找 ,打**等等,複雜的過程。這就相當於,你需要乙個房子,然後你自己通過這些途徑去找。其實,我們還可以找房屋中介公司,告訴他們我們需要乙個什麼樣的房子。然後,等著入住就好了。這裡面的區別是什麼呢?由你去找房子變成了房屋中介公司為你提供房子。雖然看似簡單,但是絕對是思想上的一種突破。ioc控制反轉就是這麼個道理。應該能理解了吧?
前面說了,房屋中介公司為你提供房子。這個提供的過程就是di了。它實際上是ioc這種思想的實現手段,很多人都說di其實就是ioc的另一種叫法,這麼說也沒什麼問題。在**中就是將被呼叫的物件注入到呼叫它的物件中去。像打針一樣哈!spring提供了三種注入方式:set方法、構造器、靜態工廠。這個這篇部落格先不講了。
就這段時間使用spring的感受上,特別是以xml方式來配置的時候。能夠很明顯的感覺到,程式中類和類之間的關係是很松的,即耦合很低。整個程式就像是由乙個乙個的物件組裝起來的,而ioc容器就是生產線負責各個部分的生產和組裝。
ioc的關鍵還是,類間關係的維護交給了容器去做。這樣的話,物件之間的呼叫不再關心要呼叫誰,而只關心需要誰,需要誰ioc容器就給你提供誰。實際上類間的關係還是程式設計師在開發的時候定義的,那麼這個關係最終是通過xml檔案或者註解的方式存在的。只是,這個關係是ioc容器去解讀的。這篇就到這裡,都是理解,沒有**哈!!
Spring學習總結IOC
ioc 控制權的反轉,應用程式不負責依賴物件的建立和維護,而是由外部容器負責建立和維護。di 依賴注入是一種ioc的實現方式,目的是建立物件並組裝物件之間的關係。bean容器初始化 本地檔案 classpath servlet或者listener listener listener class or...
Spring學習筆記 IoC
getbean 方法 引數為class時要保證配置檔案中bean唯一 構造器注入 通過constructor arg節點注入 工廠方法注入 很少使用 繼承 通過在bean中新增屬性parent指定繼承的父bean,也可以忽略父 bean 的 class 屬性,此時 abstract屬性 必須設為 t...
spring框架Ioc學習
理解 1 在ioc沒有出現之前,如果物件a需要依賴物件b,那麼在a初始化或執行到某乙個點的時候,需要去建立或者呼叫已經建立的物件b.不管是建立還是直接呼叫,控制權都在自己手裡.2 ioc出現之後,如果物件a需要依賴物件b,這是會有乙個容器來管理這種需求,將物件b注入到物件a中,這樣乙個容器我們稱之為...