什么时候在Spring MVC上使用Spring WebFlow是有意义的?

时间:2010-07-27 15:08:08

标签: java spring web-applications spring-mvc spring-webflow

Spring MVC已经成为构建企业Web应用程序的一个非常流行的框架。任何复杂的Web应用程序都有某些需要编码的流程,包括一些条件流程(即,如果信用卡信息正确则显示处理顺序,或者如果未正确输入某些内容则显示验证错误)。

什么时候在Spring MVC上使用Spring WebFlow是有意义的?关于使用Spring WebFlow的决策过程应该是什么?

4 个答案:

答案 0 :(得分:7)

如果您的Web应用程序有一些应用程序进程。例如,如果您有某种注册过程,一个按钮可以转到一个页面,而另一个按钮可以转到另一个页面。 Spring Webflow可以很好地处理转换到不同的进程集。

基本上,如果应用程序的某些部分是链接的,并且在执行过程中页面相互依赖,则可以使用SWF。

答案 1 :(得分:3)

我个人在网络流程中最喜欢的是两件事:

  1. 能够继承流和视图状态。当您想要在应用程序的不同部分之间共享一些常见的逻辑方面时,这非常方便。例如,您有要在单独的流中抽象的CRUD逻辑,然后允许子流继承此逻辑。每个流都可以有输入和输出,因此您的逻辑可以非常精细。
  2. 强大的测试框架。在单元测试中,可以涵盖流逻辑的几乎所有方面。您可以模拟许多程序化的事情,例如动作激活,从一个视图到另一个视图的转换,流持久性处理等等。
  3. 我不喜欢的是新版本的不一致和向后兼容性差。例如,最新的webflow 2.1与JSF 1.x jira不兼容。与Spring Security集成也存在许多问题。例如,在spring security 3.x中,他们只更改了一些包名 一般来说,正如Sasi所说,webflow几乎会迫使你在不同的webflow中分离你的逻辑 - 我觉得这很好。

答案 2 :(得分:2)

Webflow有效解决的一个问题是它与您的控制逻辑完全分离(或者至少很难混合)业务逻辑。
同意@John的用例,但我想指出一旦你开始大量使用webflow,你会发现自己编写了很多xml文件(因为在webflow中你指定了xml文件中的所有流)。对我个人而言,这几乎是一个破坏性的交易。

答案 3 :(得分:1)

我使用过MVC和SWF。我个人更喜欢SWF而不是MVC,原因如下:

  1. Spring MVC没有内置的机制来跨同一浏览器中的多个选项卡进行会话控制。
  2. 在SWF中处理浏览器返回比MVC更容易。