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