直觀地講,就是容器控制程序之間的關係,而非傳統實現中的程序代碼操控。這也就是所謂“控制反轉”的概念所在。IOC還有另外一個名字——“依賴注入(Dependency Injection)”。從名字上理解,所謂依賴注入,即組件之間的依賴關係由容器在運行期決定。
舉個最頻繁的例子:當一個對象依賴於另外一個對象時,傳統的做法是在本類通過裏new OtherClass()得到它類的引用,或者通過工廠模式獲得它類的引用。那麼使用了Spring的IOC後呢,請看下面:
請看listUsers()方法裏的userService.listUsers()這句。如果你之前沒接觸過Spring,那麼你會懷疑程序運行到這裏會報空指針異常。其實此處採用了Spring的setter方法來注入了依賴的對象,你只用這麼配置一下:
這一切由容器控制了,程序員關心的東西更少了,專心編寫業務吧。
Spring IOC的對象注入方式除setter方法注入外,還可以採用構造函數注入