天天看點

Spring(二):IOC和DI的了解

一、IOC和DI的了解

        在平時的java應用開發中,我們要實作某一個功能或者說是完成某個業務邏輯時至少需要兩個或以上的對象來協作完成,在沒有使用Spring的時候,每個對象在需要使用他的合作對象時,自己均要使用像new object() 這樣的文法來将合作對象建立出來,這個合作對象是由自己主動建立出來的,建立合作對象的主動權在自己手上,自己需要哪個合作對象,就主動去建立,建立合作對象的主動權和建立時機是由自己把控的,而這樣就會使得對象間的耦合度高了,A對象需要使用合作對象B來共同完成一件事,A要使用B,那麼A就對B産生了依賴,也就是A和B之間存在一種耦合關系,并且是緊密耦合在一起,而使用了Spring之後就不一樣了,建立合作對象B的工作是由Spring來做的,Spring建立好B對象,然後存儲到一個容器裡面,當A對象需要使用B對象時,Spring就從存放對象的那個容器裡面取出A要使用的那個B對象,然後交給A對象使用,至于Spring是如何建立那個對象,以及什麼時候建立好對象的,A對象不需要關心這些細節問題(你是什麼時候生的,怎麼生出來的我可不關心,能幫我幹活就行),A得到Spring給我們的對象之後,兩個人一起協作完成要完成的工作即可。是以控制反轉IoC(Inversion of Control)是說建立對象的控制權進行轉移,以前建立對象的主動權和建立時機是由自己把控的,而現在這種權力轉移到第三方,比如轉移交給了IoC容器,它就是一個專門用來建立對象的工廠,你要什麼對象,它就給你什麼對象,有了 IoC容器,依賴關系就變了,原先的依賴關系就沒了,它們都依賴IoC容器了,通過IoC容器來建立它們之間的關系。

       DI(依賴注入)其實就是IOC的另外一種說法,DI是由Martin Fowler 在2004年初的一篇論文中首次提出的。他總結:控制的什麼被反轉了?就是:獲得依賴對象的方式反轉了。

      總結來說:IOC:控制反轉:将對象的建立權,由Spring管理.

                        DI:依賴注入:在Spring建立對象的過程中,把對象依賴的屬性注入到類中.

二、IOC 、DI圖解

Spring(二):IOC和DI的了解
Spring(二):IOC和DI的了解

三、IOC底層代碼模拟

Spring(二):IOC和DI的了解