
亲爱的 Spring 社区,
我们非常高兴地宣布 Spring Web Flow (SWF) 1.0 RC1(发布候选版 1)已发布。 下载。
经过一年多的辛勤开发、29,000 次下载、500 名论坛用户的 3,700 篇帖子、一本图书以及众多社区-驱动的文章,此版本发布了 Spring Web Flow 的第一个 1.0 发布候选版。 此版本被认为适合生产环境使用,它巩固了 1.0 API,该 API 将在整个 1.x 系列中保持向后兼容。
感谢所有支持我们产品的 Spring Web Flow 早期采用者和倡导者。 得益于您的反馈和支持,Spring Web Flow 提供了当今最创新、最强大的控制器引擎之一。
Spring Web Flow 团队预计在 1.0 最终版之前还会有一个发布候选版。 1.0 RC1 的新特性和值得注意的变化包括...
新特性和值得注意的变化
改进了对有状态业务组件的管理支持。 Spring Web Flow 现在采用了几种技术来管理执行业务逻辑的有状态中间层组件实例,作为任务执行的一部分。 在大多数情况下,状态管理是
完全透明的。 您只需将应用程序状态存储在实例变量中,Spring Web Flow 会以线程安全的方式处理该状态在会话中的作用域。
简单的 NumberGuess 示例应用说明了此支持,其中由流管理的“Game”组件执行游戏业务逻辑。 组件本身对 Spring Web Flow API 没有依赖。
为了演示,Game 组件的业务接口可以定义为

与用户一起执行游戏的流定义可能如下所示:

最后,逻辑 game 动作标识符与 Game 实现之间的绑定由 Spring 在 game-beans.xml 中完成。

HigherLowerGame 实现也与 Spring 和 Spring Web Flow API 完全解耦。
增强了对流变量的支持,流变量在流启动时自动创建。 流变量的值甚至可以从支持 bean 工厂中获取,从而受益于完整的依赖注入。 变量的精确作用域是可配置的。
一种新的流执行重定向响应类型,用于重定向到唯一的“流执行 URL”。 访问流执行 URL 会刷新先前进入 ViewState 的流,允许从那里继续执行。 在会话处于活动状态且延续点仍然有效时,该 URL 保持有效。 这允许完全使用后退、前进、刷新和新窗口按钮,而无需页面缓存。
状态异常处理的改进,提供方便的支持以执行状态异常处理程序。 核心过渡元素现在支持 on-exception 属性,当异常发生时,该属性驱动一个过渡到新状态。 例如
... 如果 placeOrder 方法抛出 AccountException,则将流过渡到 editAccount 状态。
改进了流属性映射支持。 现在每个流都可以配置 input-mapper 来映射启动流的调用者提供的输入。 流还可以配置 output-mapper 将返回值暴露给终止流的调用者。 这些增强功能允许流在不更改的情况下作为顶层流和子流重复使用,因为输入和输出属性在这两种情况下都得到一致的映射。
支持动态视图名称和目标状态表达式,从而方便地在运行时计算 ViewState 的逻辑视图名称和过渡的目标状态。
增强了 JSF 集成。 JSF 集成现在支持逻辑重定向响应类型,包括 FlowExecutionRedirect、ConversationRedirect、FlowRedirect 和 ExternalRedirect。 此外,对 FlowPhaseListener 的增强允许启动和刷新流执行,而无需经过正式的导航步骤。 预计 1.0 RC2 将在 Portlet 环境中为 JSF 添加更多便利性和官方支持。
附加资源和入门指南
Spring Web Flow 1.0 RC1 进一步完善了参考手册,提供了 50 页关于 SWF 用法的重点内容。 该手册可在 HTML 和 PDF 格式在线获取。
开始使用 Spring Web Flow 的最佳方法之一是查看和演练示例应用程序。 我们建议从一开始就查看所有示例,并根据需要补充参考手册材料。 1.0 RC1 版本附带了九 (9) 个示例应用程序,每个都演示了产品的一组不同功能。 这些示例包括:
1. Phonebook - 演示大多数功能(包括子流)的原始示例。
2. Sellitem - 演示了带有条件过渡、流执行重定向、会话范围和连续性的向导。
3. Flowlauncher - 演示了启动和恢复流的所有可能方法。
4. Itemlist - 演示了 REST 风格的 URL、到可刷新会话 URL 的会话重定向以及内联流。
5. Shippingrate - 演示了 Spring Web Flow 与 Ajax 技术的结合使用(感谢 Steven Devijver)
5. NumberGuess - 演示了有状态 Bean
6. Birthdate - 演示了 Struts 集成。
7. Fileupload - 演示了多分部文件上传。
8. Phonebook-Portlet - Portlet 环境中的电话簿示例(请注意,流定义没有改变)
9. Sellitem-JSF - JSF 环境中的 Sellitem 示例(请注意,流定义没有改变)
要一步构建示例应用程序以进行部署,只需提取发行版存档,访问 projects/build-spring-webflow 目录并执行 ant dist 目标。 有关发行版存档内容和示例的更多信息,请分别参阅 release readme.txt 和 projects/spring-webflow-samples/readme.txt。 所有示例项目现在都是 Spring IDE 项目,可以直接导入 Eclipse。 敬请期待 Spring IDE 团队即将推出的 Spring IDE 图形化 Web 流编辑器。
感谢所有使用 Spring Web Flow 并提供反馈使其更强大的人们,感谢大家让 Spring Web Flow 成就今日的辉煌。 祝大家使用愉快!
诚挚地,
Spring Web Flow 团队
Keith Donald
Erwin Vervaet
Colin Sampaleanu
Juergen Hoeller
Rob Harrop