如何将struts2转换为SpringMVC

时间:2011-08-17 17:06:37

标签: spring-mvc struts2

我不想辩论是否从struts2转换 - >用SpringMVC。我有最好的理由去做。这是客户要求/支付的费用。

我已经做了struts1年了,我已经完成了SpringMVC。我希望通过xml进行配置,而不是使用Annotations。

我的计划是:

  1. 获取每个struts2操作类,了解正在执行的操作,然后创建一个干净的API以委派给业务层。此步骤不是必需的。它就在这里,所以我们可以重构任何有意义的东西。
  2. 为每个struts 2操作类创建一个SpringMVC Controller(大致)。
  3. 我知道这只是触及需要做的事情的表面。还有其他人要添加吗?

    提前致谢,

    安德鲁

1 个答案:

答案 0 :(得分:4)

如果正确创建了struts2操作,那么服务层就会有一个干净的API。希望Struts2应用程序已经在使用Spring DI。 Struts2对象可以重用。但是web层相对较薄,因此最好删除struts2动作的任何痕迹以简化进一步的开发,而不是留下奇怪的工件。

struts的用户有四个主要部分负责。

  1. 行动类
  2. 视图层中的Struts2特定标记
  3. 验证
  4. 拦截
  5. 已经提到的动作类应该非常薄,它的主要目的是在前往视图的路上封送对象。 (要编组它们,需要设置表单参数并验证它们)。如果从服务层获取对象,那么您应该能够将逻辑切换并粘贴到Spring控制器中。如果您发现应该在服务层中的逻辑,则应该将其推高。

    视图层中的标签我不太确定。可能最好用jstl标签替换struts特定标签。 Struts2没有庞大的标签集,标签之间应该有一对一的映射,但是你需要弄清楚映射是什么(以及哪个标签是最好的)。

    验证 - 我不知道Spring MVC如何进行验证。

    拦截器解决横切问题,我不知道Spring拦截器是如何工作的。 Spring可以通过AOP来解决自定义拦截器的问题。

    总而言之,网络层不应该是非常具有侵略性......而且我不确定你将获得什么。请注意,如果您当前的S2应用程序未使用Spring DI,则可以非常轻松地添加AOP,您甚至可以将操作的创建委派给Spring。因此,我预计这种转换的回报很少。作为替代方案,使用Spring MVC开始构建所需内容可能更容易,并将struts2操作转换为Web服务(json非常容易)。当你有时间在Spring MVC中实现它们时,然后拆分它们。转换意味着理解两个系统并对它们进行映射,它很混乱且容易出错......这具有相同的最终效果(删除struts2框架),但也可以提高生产率。