1. 程式人生 > >華為BME框架與Struts2整合Spring的比較分析

華為BME框架與Struts2整合Spring的比較分析

      最近我一直在考慮一個問題,華為的BME框架與裸奔的Struts2整合Spring到底差別在哪裡呢?由於多次直接使用BME框架來開發MTV Portal系列專案,覺得BME框架整合整合Spring和Struts2做得相當好,使用比較方便,就想徹底弄明白BME開發框架和直接使用Struts2+Spring究竟有哪些不同?當然要搞清楚這個問題必須有3個前提:第一個是明白Struts2整合Spring的使用方式;第二個是明白Struts2的啟動和載入配置檔案的流程;第三個是如何控制Spring載入配置檔案流程和建立業務物件的流程。第一個需要具體實踐,第二個和第三個先決條件需要研讀Struts2和Spring的原始碼。

      BME框架是一個綜合的框架,WebUI只是其中的一部分,它的WebUI部分是在Struts2+Spring2.0+Spring WebFlow的基礎上構建的。本篇的後續部分將BME框架的WebUI模組簡稱為UI,當然UI比當前市場上流傳出來的Struts2+Spring2.0架構使用起來要方便一些,我這裡主要分析的就是UI與直接使用Struts2+Spring2.0的差別以及UI的這個優點我們是如何實現的?

      UI與Struts2整合Spring2.0的最大區別在於UI使用的是統一的配置檔案,將Struts2的配置檔案與Spring2.0的配置檔案無縫的結合在一起了。

      在使用Struts2整合Spring2.0的時候典型的Spring的配置檔案applicationContext.xml格式如下:

      在使用Struts2整合Spring2.0的時候典型的Struts2的配置檔案struts.xml格式如下:

      這裡的配置檔案有一個問題,就是對於Action存在重複的配置,在Spring中要配置一次,在Struts2中也要配置一次,同樣一個Action類要遵循Struts2的規範和遵循Spring2.0的規範配置了兩次,讓人從感覺上來說就脫離開來了,結合得不那麼完美。對於這個問題BME框架的UI模組就解決得非常的美妙了,它仿照並且擴充套件Spring2.0和Struts2的配置檔案,對於Action再也不需要在兩邊都配置了,只需要在Action的配置檔案中一次了。

      上述例子在BME的UI框架中則可以如下配置。

      對於使用Spring的業務層,典型的配置檔案login.service.xml檔案格式如下:

        對於使用Struts2的WEB層,典型的配置檔案login.web.xml檔案格式如下:  

     結合得多麼完美啊!

     那麼這一切又是如何實現的呢?