华为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格式如下: /login.jsp /login.jsp /main.jsp /error.jsp

      这里的配置文件有一个问题,就是对于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文件格式如下: /login.jsp /login.jsp /main.jsp /error.jsp   

     结合得多么完美啊!

     那么这一切又是如何实现的呢?

 

 

你可能感兴趣的:(Struts2)