在 Spring MVC 之上使用 Spring WebFlow 啥时候有意义?

Posted

技术标签:

【中文标题】在 Spring MVC 之上使用 Spring WebFlow 啥时候有意义?【英文标题】:When does it make sense to use Spring WebFlow on top of Spring MVC?在 Spring MVC 之上使用 Spring WebFlow 什么时候有意义? 【发布时间】:2011-03-21 16:12:54 【问题描述】:

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

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

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

【参考方案2】:

我个人最喜欢 webflow 的两件事:

    能够继承流和视图状态。当您想要在应用程序的不同部分之间共享一些公共逻辑方面时,这非常方便。例如,您有想要在单独的流中抽象的 CRUD 逻辑,然后允许子流继承此逻辑。每个流都可以有输入和输出,因此您的逻辑可以非常细粒度。 强大的测试框架。在单元测试中几乎可以涵盖流逻辑的所有方面。您可以模拟许多程序化的东西,例如动作触发、从一个视图到另一个视图的转换、流持久性处理等等

我不喜欢新版本的不一致和较差的向后兼容性。例如,最新的 webflow 2.1 与 JSF 1.x jira 不兼容。与 Spring Security 集成也存在许多问题。例如,在 spring security 3.x 中,他们只是更改了一些包名称 一般来说,正如 Sasi 所提到的,webflow 几乎会迫使你将逻辑分离到不同的 webflow 中——我认为这很好。

【讨论】:

【参考方案3】:

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

【讨论】:

我同意 xml 非常繁琐,但替代方案更是如此(用 java 编写自己的流逻辑)。我见过人们在 webflow 可用之前尝试这样做,维护起来简直就是一场噩梦。【参考方案4】:

我使用过 MVC 和 SWF。由于以下两个可靠的原因,我个人更喜欢 SWF 而不是 MVC:

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

【讨论】:

以上是关于在 Spring MVC 之上使用 Spring WebFlow 啥时候有意义?的主要内容,如果未能解决你的问题,请参考以下文章

Spring 3 MVC 从控制器访问 HttpRequest

Spring和springMVC详细示例精通教程

如何在Spring中配置Websocket

求大神解释解释MVC与SpringMVC是啥,

netty和spring mvc+tomcat分别实现http 服务器个有啥优势

Spring的学习____1.概述