SpringIoC
強依賴關係
現在有兩個類,類A和類B,其中A類中有一個fun方法,B類向調用這個方法有什麼辦法呢?首先fun是一個普通方法,要調用必然要有A類的對象。因此可以這樣:
但這樣的話,A和B之間就會產生一種關係,一種強依賴關係,B類是依賴於A的也就是說沒有A類這個對象它就調用不了A類的方法。
而Ioc就是爲了降低這種依賴而生的。那麼如何降低依賴呢?
控制反轉
Inversion of Control,縮寫爲IoC,譯爲控制反轉,是面向對象編程的一種設計原則。目的是用來降低代碼之間的耦合度。
- 剛開始創建對象的權利在B類中,或者說在程序中,也就是說由程序來主動創建對象
- 但有了控制反轉就不一樣了,A類和B類都無需自己創建對象了。都統統交給容器。容器來管理對象的整個生命週期,和對象之間的關係。
這便是控制反轉,反轉的是一種權利,一種創建對象的權利。
雖然程序不用創建對象了,交由了Spring容器,但程序要用對象啊,這樣才能調用方法,這一點Spring自然是明白的,因此Spring又有一個依賴注入技術。
依賴注入
在上述情景中B類需要A類的對象,你不用自己new了,Spring容器來給你注入一個,就像打針一樣,這樣你就有A類的對象了,這樣的話,你和A類也沒多大關係了,這個A類的對象是容器給你的,又不是你new的。
依賴注入的優點
- 每個類都會將自己註冊在容器中,由容器統一管理。
- 程序需要什麼資源(哪個類的對象)容器就給你提供一個,無需自己創建。
- 重複利用,提高了對象的利用率。
- 降低了程序間的耦合度
- …