IOC 容器初始化小结
總結一下IOC 容器初始化的基本步驟:
1、初始化的入口在容器實現中的refresh()調用來完成。
2、對Bean 定義載入IOC 容器使用的方法是loadBeanDefinition(),其中的大致過程如下:通過ResourceLoader 來完成資源文件位置的定位,DefaultResourceLoader是默認的實現,同時上下文本身就給出了ResourceLoader 的實現,可以從類路徑,文件系統,URL 等方式來定為資源位置。如果是XmlBeanFactory 作為IOC 容器,那么需要為它指定Bean 定義的資源,也就是說Bean 定義文件時通過抽象成Resource 來被IOC 容器處理的, 容器通過BeanDefinitionReader 來完成定義信息的解析和Bean 信息的注冊, 往往使用的是XmlBeanDefinitionReader 來解析Bean 的XML 定義文件- 實際的處理過程是委托給BeanDefinitionParserDelegate 來完成的,從而得到bean 的定義信息,這些信息在Spring 中使用BeanDefinition 對象來表示-這個名字可以讓我們想到loadBeanDefinition(),registerBeanDefinition()這些相關方法。它們都是為處理BeanDefinitin 服務的,容器解析得到BeanDefinition 以后,需要把它在IOC 容器中注冊,這由IOC 實現BeanDefinitionRegistry 接口來實現。注冊過程就是在IOC 容器內部維護的一個HashMap 來保存得到的BeanDefinition 的過程。這個HashMap 是IOC 容器持有Bean 信息的場所,以后對Bean 的操作都是圍繞這個HashMap 來實現的。
然后我們就可以通過BeanFactory 和ApplicationContext 來享受到Spring IOC 的服務了,在使用IOC容器的時候,我們注意到除了少量粘合代碼,絕大多數以正確IOC 風格編寫的應用程序代碼完全不用關心如何到達工廠,因為容器將把這些對象與容器管理的其他對象鉤在一起。基本的策略是把工廠放到已知的地方,最好是放在對預期使用的上下文有意義的地方,以及代碼將實際需要訪問工廠的地方。Spring本身提供了對聲明式載入web 應用程序用法的應用程序上下文,并將其存儲在ServletContext 中的框架實現。
?
總結
以上是生活随笔為你收集整理的IOC 容器初始化小结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 注册注解BeanDefinition
- 下一篇: 依赖注入发生的时间