IoC控制反轉是什麼意思?

2021-08-21 02:41:55 字數 1091 閱讀 5561

最近由於日本專案的需要,開始學習spring框架的東西。雖然框架被日方公司進行了一定的修改,但spring大體原理是不變的。spring最大的特點,相信大家在網上看了許多,都知道是控制反轉(ioc),或者叫依賴注入(di),那麼究竟什麼是控制反轉,什麼是依賴注入呢?

class a ;

amethod()

}

class a中我先宣告了乙個藉口a,然後構造了a(只不過什麼都沒寫),定義了乙個方法,在這個方法裡面例項化ainte***ceimpl這個類出來,那麼class a和ainte***ceimpl就存在了耦合的關係,也可以說class a依賴於ainte***ceimpl,沒有ainte***ceimpl,class a就建立不出來。

這只是簡單舉個例子,只是一種耦合關鍵,相信大家在實際寫**的時候肯定遇到過這樣的情況,乙個類裡面要new好幾個其他類,程式執行是全部new的,但實際執行的時候未必用得上,這樣就造成了一定的運算和儲存的浪費。

控制反轉,就是把這種依賴關係剝離開(需要在class a中new的類,現在不用了,從其他地方獲得),把裡面物件的建立,依賴的**,交給容器來實現(是的,spring就是個容器),將原有的依賴關係(class a和ainte***ceimpl依賴,而不是binte***ceimpl)交給xml、properties這樣的檔案去描述。

這樣做有什麼好處?由於把物件生成放在了xml裡定義,所以當我們需要換乙個實現子類將會變成很簡單(一般這樣的物件都是實現於某種介面的),只要修改xml就可以了。當然這種方式對於剛剛新接觸的朋友來說可能不太習慣,經常忘記修改xml導致莫名其妙的錯誤也是家常便飯(別問我怎麼知道的)。

所以控制反轉ioc是說建立物件的控制權進行轉移,以前建立物件的主動權和建立時機是由自己把控的

,而現在這種權力轉移到第三方,比如轉移交給了ioc容器,它就是乙個專門用來建立物件的工廠(beanfactory),你要什麼物件,它就給你什麼物件,有了 ioc容器,依賴關係就變了,原先的依賴關係就沒了,它們都依賴ioc容器了,通過ioc容器來建立它們之間的關係。

uma是什麼意思 UMA是什麼意思?

展開全部 uma 不明生物 是636f707962616964757a686964616f31333431376537動畫 進化戰記 betterman 中的一類人造怪物的統稱,是生命工學食料研究所 b.p.l.所長梅崎博士製造出來 協助他利用阿尼瑪斯之花 大量製造蛋白質 具有驚人攻擊性的怪物。阿拉...

是什麼意思?

meta是html中的元標籤,其中包含了對應html的相關資訊,客戶端瀏覽器或伺服器端的程式會根據這些資訊進行處理。http equiv類似於http的頭部協議,它回應給瀏覽器一些有用的資訊,以幫助正確和精確地顯示網頁內容。content 內容型別 重要!這個網頁的格式是文字的,網頁模式 chars...

In 是什麼意思

函式引數型別前 in 代表什麼 在visual c 中屬於sal批註,是為了編譯系統在分析 時發現缺陷用的 表示是乙個輸入引數。可以定義乙個 in 的巨集,這個巨集什麼都不做,就是形如這樣的。define in void fun int in x 等同於 void fun int x 但是他給出了引...