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