抢占先机
VMware 提供培训和认证,助您加速发展。
了解更多致 Spring 社区,
我们很高兴地宣布,Spring Web Flow 下一代版本的首个里程碑现已发布。 Spring Web Flow 2.0 M1 引入了几项主要新功能,包括对流管理的持久化上下文的支持、对 Java Server Faces 的改进支持、完整的统一表达式语言 (EL) 支持,以及一个更全面的示例 Web 应用。
Spring Web Flow 2.0 是一个用于开发 Java Web 应用控制器的下一代框架。 该框架提供了一个统一的运行时环境,用于在各种环境中执行无状态和有状态的客户端交互。
Web Flow 2.0 版本目标
如今,大多数应用开发者使用 Spring Web Flow 来实现线性页面流,例如向导,方法是将 Web Flow 接入到他们的“基础”Web 框架中,如 Spring MVC。 这类页面流呈现出线性的导航规则,是有状态的,并构成了 Web 应用功能的动态、自包含模块。 一个很好的例子是贷款申请流程:Web Flow 独特的流程定义语言为实现这类流程提供了一种自然的编程模型。
Spring Web Flow 2.0 的总体目标是正式将该产品从今天的形态(主要用于实现线性向导的框架)发展到其一直被设计的目标:一个为所有类型客户端交互提供支持的通用应用控制器引擎。 这类交互包括向导、无状态的“RESTful”交互,以及 Web 2.0 应用中常见的更细粒度、非线性/异步的交互。
Spring Web Flow 2.0 将为 Spring 社区提供一个统一的应用控制器框架和运行时环境,适用于执行所有类型的客户端交互,并能够集成各种视图渲染技术和 UI 组件模型。 这个统一的运行时环境将能够一致地应用管理工具、安全、AJAX 和托管持久化等独特功能。
查看完整的 Spring Web Flow 2.0 路线图。
Web Flow 2.0 M1 新特性与重要事项
首个 2.0 发布里程碑引入了几项通往 2.0 正式版的重大新功能。 这些功能如下所述。
使用 JPA 和 Hibernate 的流管理持久化上下文
Spring Web Flow 2.0 M1 引入了对使用 Hibernate 和 JPA 的流管理持久化上下文的支持。 该版本包含的新的 酒店预订示例应用 展示了这一功能。 以下是其在预订示例中的工作方式
此酒店预订流程的图形化 Spring IDE 视图如下所示
改进的 Java Server Faces (JSF) 支持
Spring Web Flow 2.0 M1 引入了 Spring Faces 模块 (spring-faces-2.0-m1.jar),这是随 Web Flow 分发包附带的一个组件,包含对使用 Java Server Faces 开发 Web 应用的组织的一流支持。 现有的 Web Flow + JSF 集成已被提取到此项目中,该项目将成为所有未来 JSF 集成工作的中心。
Spring Faces 模块为 Spring 社区提供了一个专门的项目,用于探索额外的 JSF 集成机会。 2.0 M1 中的初步工作引入了与 Ext 的集成,Ext 是一个流行的 Javascript GUI 小部件框架。 提供了几个轻量级的 JSF UI 组件,用于封装富 Ext 小部件的渲染。 我们采取的方法允许 Ext 小部件装饰标准的 JSF 组件,添加类似桌面的外观和额外的 UI 行为,例如客户端验证。 2.0 M1 中提供了以下 Ext 组件装饰器
日期验证器控件的屏幕截图,也用于酒店预订示例应用中,如下所示
Ext 控件看起来很棒,并且由于所有 UI 行为都在客户端执行,UI 的响应性非常出色。 在未来的 Web Flow 发布里程碑中,我们将作为 Spring Faces 模块的一部分,在此领域添加进一步的支持。
拥有一个专门的 Spring Faces 模块也简化了在 JSF 环境中设置 Spring Web Flow 的过程。 在 2.0 M1 之前,开发者需要手动修改 faces-config.xml 来设置样板式的 Spring/SWF 集成管道。 有了 2.0 M1,只需在类路径中包含 spring-faces-2.0-m1.jar 即可自动完成此设置。
统一表达式语言 (EL) 支持
此版本的新功能还包括对统一 EL 的全面支持,它提供了 Spring Web Flow 中当前默认使用的基于 OGNL 的表达式解析器的替代方案。 现在建议在 JSF 环境中使用统一 EL,并且在未来的里程碑中将成为 JSF 开发者的默认选项。
酒店预订流程定义中使用的 EL 表达式示例如下所示:
上面的“id”表达式评估存储在 Flow Scope 中的当前酒店标识符。 注意,这里不需要任何明确的 flowScope 前缀。 开发者只需按名称引用变量,ELExpressionEvaluator 会通过搜索各种作用域来解析变量。 这使得 Web Flow 定义中的托管 bean 引用与用于模型绑定表达式的 JSF 视图中的引用 100% 一致。 例如,请参阅 bookingForm.xhtml 视图中的以下代码片段
2.0 发布说明
Spring Web Flow 2.0 需要 Spring 2.0 或更高版本以及 Java 1.4 或更高版本。
Spring Web Flow 2.0 将尽可能保持与 1.0.x 基于 XML 的流程定义语言的向后兼容性。 预计在未来的 Web Flow 2.x 里程碑中,随着 Web Flow 演变为一个完整的控制器框架,一些 SWF SPI 将会发生变化。
Spring Web Flow 2.0 未来的里程碑将引入新的方言,用于在实际编程语言中定义流程,为当前基于 XML 的流程定义语法提供更强大的替代方案。 基于 POJO 的 Java 流程定义语法正在开发中,同时也在开发基于 Groovy 的方法。 此外,还将引入用于实现 REST-ful 和 CRUD 流程的高级流程方言。 因为 Web Flow 定义 API 和执行运行时与任何具体的流程定义语法是分开的,所以我们可以自然地引入新的语法,以不同的方式在运行时构建应用控制器。
对于 JSF 用户,Spring Web Flow 2.0 和 Spring Faces 可在 JSF 1.1 和 JSF 1.2 上运行。 Spring Faces 模块中的 UI 组件库独立于 Web Flow 运行时,也可与 JSF 的默认导航处理器一起使用。
Spring Web Flow 2.0 将继续全面支持 Servlet 2.4 或更高版本、Portlet 1.0 或更高版本以及 JUnit 3.8.1 或更高版本的环境。
Spring Web Flow 2.0 将继续在 Struts 1.2 或更高版本以及 Spring MVC 2.0 或更高版本的环境中运行,并且在 2.0 正式版发布时,它也将可用作独立的 Web 应用控制器框架。