各位老少爺們,趕緊系緊安全帶,菜鳥開車,防止車速過快。言歸正傳,本篇文章呢,主要是來探討一下SPRing管理bean的原理。
如上xml文件所示,通常我們在使用Spring管理系統應用的組件時,在Spring的核心配置文件中,配置上需要管理組件的信息就可以了,剩下的就都交于Spring框架了。但是我們不要滿足于用,更要知道其中的原理。知己知彼,百戰不殆。為了了解Spring框架如何管理bean的,接下來我們簡單模仿一下Spring 容器。
MyTestClassPathXMLapplicationContext類模仿了Spring 容器,仔細分析其中的代碼,可以知道,在這個容器類中,我主要做了以下幾個步驟:1. 讀取xml配置文件, 數據封裝到BeanDefinition。
2. 將BeanDefinition對象存入list。
3. 遍歷list, 通過反射產生對象并存入map。
4. 調用getBean方法返回一個bean對象, 此bean對象為單例。
讀取xml配置文件時,我采用的是dom4j 的sax方法,并且通過xpath來匹配xml文檔中的節點。因此我們需要在項目中引入兩個jar包:dom4j-1.6.1.jar、jaxen-1.1-beta-6.jar。將這兩個jar扔到項目的lib文件夾下即可。當我們解析完成xml文檔,并且將xml文檔中<bean>節點所配置的信息封裝到BeanDefinition對象中時,接下來容器會通過這些封裝的配置信息,通過反射技術,實例化bean對象,并存入一個Map集合。容器提供了一個getBean方法,在容器外部可以獲取到實例化后的bean對象。 容器類已經模仿好了,那么接下來需要進行實例測試了。事先我定義了一個接口,并且編寫實現類實現了這個接口,代碼如下。 編寫測試用例,我采用的是單元測試框架junit4進行測試單元測試,測試用例代碼如下。 以上就是通過模仿Spring容器管理bean的過程,可以讓我們可以更深入的理解Spring管理bean對象的機制,當然以上的模仿只是做簡單的模仿,Spring 的容器提供了更多的功能和更多的行為,需要你慢慢地去理解和使用。新聞熱點
疑難解答