spring ioc它其實是一種降低對象耦合關系的設計思想,通常來說,我們在一個類調用另一個類的方法的時候,需要不斷的new新的對象來調用該方法,類與類之間耦合度比較高,有了ioc容器以后,ico容器幫對象找相應的依賴對象並注入,而不是由對象主動的去找。這就是控制反轉。
ioc最重要的一點就是可以在程序運行的時候,動態的向某個對象提供它所需要的其他對象,這就是通過依賴注入實現的,比如,我們對數據庫進行操作,需要一個connection對象,以前,我們都是手動的去編寫一些代碼獲取一個connection,有了spring以后,我們只需要告訴它,我需要一個connection對象,至於它如何生成,什么時候生成,我不需要關心,在系統運行的時候,spring會適時的創建一個connection,然后像打針一樣注入到對象中,這樣就完成了各個對象之間的關系的控制。
那它是怎么做到的呢,就是通過反射機制做到的,反射機制可以在程序運行的時候,得到一個對象所屬的類,獲取一個類的所有成員變量和方法,在運行時動態的創建類的對象,在運行時調用對象的方法。
至於這些對象如何生成的,可以看ioc容器的具體實現,比如xmlBeanFactory,ClasspathXmlApplicationContext,ApplicationContext,其中ApplicationContext除了提供ioc的基本功能外,還可以實現國際化,訪問資源,支持應用事件。
Spring 上下文:Spring 上下文是一個配置文件,向 Spring 框架提供上下文信息。Spring 上下文包括企業服務,例如 JNDI、EJB、電子郵件、國際化、校驗和調度功能。