【问题标题】:Spring Web Flow and AlternativesSpring Web Flow 和替代方案
【发布时间】:2015-11-10 22:16:42
【问题描述】:

我正在使用 Spring MVC 和休眠构建一个 Web 应用程序。我正在与范围作斗争。例如,在同一个接口上创建父级和子级需要在创建第一个子级后重置子 bean。 Spring MVC 不允许从会话范围中删除 bean。同时,跨多个请求范围转移子级是不切实际的。我需要一个对话范围。

我现在将 Spring Web Flow 视为一种解决方案。但是,它的文档记录很差,似乎完全依赖于 xml 配置。这两个功能似乎都表明它是一个较旧且可能没有得到很好支持的项目。

谁能建议我是否应该花时间学习 Spring Web Flow,或者建议与 Spring MVC 相关的替代解决方案。

【问题讨论】:

  • Ehrm 上一个版本是几周前发布的,我怀疑您是否阅读了正确的文档,因为对基于 java 的配置的支持已经存在了一段时间......请参阅 docs.spring.io/spring-webflow/docs/2.4.0.RELEASE/reference/html/…
  • @M.Deinum 可能将您的问题误认为是 JavaConfig。他是对的,当然。不久前添加了 JavaConfig 支持。但我相信您是在问网络流本身是如何定义的。那仍然是 100% XML。

标签: spring-mvc spring-webflow


【解决方案1】:

Spring Web Flow 似乎得到了维护,但并未处于积极开发中。我看到a handful of commits,主要是更新依赖版本和修复bug。

您是正确的,流程的配置是纯 XML 的,我认为这是这个老化的 Spring 项目的最大缺点。我搜索了 DSL 或动态构建器,但没有找到任何东西。

话虽如此,我会试一试。简单的流程——甚至是动态的和继承的流程——都是可能的。此外,支持表单和 POST-Redirect-GET 模式实现可能对您有用。当您使用浏览器后退按钮时,最后一种技术可以防止重新提交表单。

【讨论】:

    【解决方案2】:

    我现在已经花了一些时间。

    我认为 xml 而不是注释的原因是设计。一旦开始了解它,流程配置就很简单,并且开发速度非常快。

    是的,它似乎处于维护模式,但设计坚固可靠,开发似乎非常高效。学习曲线有点陡峭,特别是如果集成到现有的 web 应用程序中,但我在大约三天内就开始运行了。

    Webflow 自己的文档不是很好,但是链接here 的教程很棒。

    更新

    5 个月过去了,我已经建立了一个完整的评估系统(即测试/考试系统)。我的背景是 IT,我拥有心理学博士学位。

    我构建的系统已经过全面测试和压力测试。

    webflow 的优势。

    1. 一个人可以毫无问题地在同一个会话中开始测试、放弃和重新启动,因为 flowState 会处理所有事情
    2. 可以完全控制用户何时可以使用返回按钮以及用户可以返回多远。在非法使用后退按钮后返回状态非常简单且用户友好。
    3. 压力测试性能极佳
    4. 配置很简单。我几乎没有花时间处理与 Webflow 相关的设计或错误问题。
    5. 从更高级别的设计角度来看,从业务角度来看,没有任何用例无法实现。

    缺点

    由于所有对象在呈现在网页上之前都已序列化,因此如果将对象从 flowState bean 中取出,则必须非常小心如何缓存它们。

    【讨论】:

      【解决方案3】:

      自从我看到“primefaces”之后,我自己就一直在研究 webflow(过去一天,大约 16 个小时)。

      Webflow 提供不同类型的状态以及到这些状态的转换。状态可以有一个与之关联的视图(HTML 页面或 JSP 页面 -> primefaces 在这里出现)。每个 JSP 页面都是模板,就像 PHP 只使用 java 和 xhtml。使用 primefaces 组件,客户端和服务器之间的交互“似乎”几乎是自动化的(快速开发的一个优点)。 Webflow 还提供了流变量,它是一个 java 数据对象。流变量可以拥有流的生命,并被视图和模板使用。 Webflow 允许您控制所有状态之间的转换。

      但是,我认为这是我停止研究的地方。首先,如果需要在客户端上构建流控制,webflow 相对于使用 AngularJS 和 Spring MVC (@RequestMapping) 的良好客户端 Web 应用程序的优势是什么。如果您想要一个在会话的生命周期中存在的变量,请创建一个 javascript 变量,但是如果该变量只需要存在于服务器上并且您想使用模板,那么 webflow 似乎是一个理想的选择。

      如果您需要一个有状态的 webapp,那么检查 Spring HATEOAS 类型概念(将状态作为参数传递给客户端)可能是一个好主意,并且该参数指的是有限时间可用性变量。编码更少,似乎更符合互联网模型。

      【讨论】:

        猜你喜欢
        • 2012-01-09
        • 1970-01-01
        • 1970-01-01
        • 2023-03-12
        • 1970-01-01
        • 1970-01-01
        • 2016-12-27
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多