下一代 Spring Web Flow 的第一个里程碑版本发布

发布 | Keith Donald | 2007 年 8 月 28 日 | ...

亲爱的 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 版本的目标

如今,大多数应用程序开发人员通过将 Web Flow 集成到他们的“基础”Web 框架(如 Spring MVC)中,使用 Spring Web Flow 实现线性页面流程(例如向导)。 此类页面流程表现出线性导航规则,是有状态的,并形成动态、自包含的 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 的流程管理的持久化上下文的支持。 版本中包含的新的酒店预订示例应用程序展示了这一功能。 以下是它在预订示例中的工作原理

  • 当一个新的酒店预订流程开始时,会自动为您创建一个持久化上下文。
  • 当您在流程中进展时,持久化上下文会自动用于所有数据访问操作。  您不必担心定位流程绑定的 EntityManager 实例,或以任何方式管理它。
  • 当您授权预订时,对托管持久化实体的所有更改都会自动提交并刷新回数据库。 如果您选择取消预订,您的任何更改都不会被提交。

以下是此酒店预订流程的图形化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 中的初步工作引入了与流行 Javascript GUI 小部件框架 Ext 的集成。 提供了几个轻量级的 JSF UI 组件,它们封装了富 Ext 小部件的渲染。 我们采取的方法允许 Ext 小部件装饰标准的 JSF 组件,从而添加桌面式的外观和额外的 UI 行为,例如客户端验证。 2.0 M1 中提供了以下 Ext 组件装饰器

  • 一个日期验证器组件,对日期文本字段执行丰富的客户端验证,并提供漂亮的日期选择器控件。
  • 一个文本验证器,对自由格式文本输入字段执行丰富的客户端验证。
  • 一个数字验证器,对数字文本字段执行丰富的客户端验证。

以下是日期验证器控件的屏幕截图,该控件也用于酒店预订示例应用程序中

 

Ext 控件看起来很棒,并且由于所有 UI 行为都在客户端执行,UI 的响应速度也非常出色。 作为 Spring Faces 模块的一部分,我们将在未来的 Web Flow 里程碑版本中增加对这方面的进一步支持。

拥有一个专门的 Spring Faces 模块也简化了在 JSF 环境中设置 Spring Web Flow 的过程。 在 2.0 M1 之前,开发人员需要手动修改faces-config.xml来设置模板式的 Spring/SWF 集成管道。 通过 2.0 m1,只需在 classpath 中包含 spring-faces-2.0-m1.jar 即可自动完成此设置。

统一表达式语言 (EL) 支持

此版本中的新功能还包括对统一 EL 的完全支持,它提供了 Spring Web Flow 当前默认使用的基于 OGNL 的表达式解析器的替代方案。 现在建议在 JSF 环境中使用统一 EL,并在未来的里程碑版本中成为 JSF 开发人员的默认选项。

以下是酒店预订流程定义中使用的 EL 表达式示例: 

 

上面的“id”表达式评估存储在 Flow Scope 中的当前酒店标识符。 请注意,这里无需任何显式的 flowScope 前缀。 开发人员只需按名称引用变量,ELExpressionEvaluator 将通过搜索各种 scope 来解析变量。 这使得 Web Flow 定义中的 managed-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 发展成为一个完整的控制器框架,预计某些 SWF SPI 在未来的 Web Flow 2.x 里程碑版本中会发生变化。

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 应用程序控制器框架使用。

Spring Web Services 1.0 发布

发布 | Arjen Poutsma | 2007 年 8 月 17 日 | ...

经过两年的开发,我们很高兴地宣布 Spring Web Services 1.0 现已发布。

Spring-WS Logo

下载 | 参考文档 | API 文档

Spring Web Services 是 Spring 社区专注于创建文档驱动、契约优先 Web 服务的产物。Spring Web Services 的关键特性包括...

  • 让最佳实践变得简单:Spring Web Services 使强制执行最佳实践变得更容易。这包括诸如 WS-I 基本配置文件、契约优先开发以及契约与实现之间的松散耦合等实践。
  • 强大的映射:您可以根据消息负载、SOAP Action 头部或 XPath 表达式将传入的 XML 请求路由到任何处理程序。
  • XML API 支持:传入的 XML 消息可以在标准 JAXP API(如 DOM、SAX 和 StAX)中处理,也可以在 JDOM、dom4j、XOM 甚至封送处理技术中处理。
  • 灵活的 XML 封送处理:Spring Web Services 分发版中的对象/XML 映射模块支持 JAXB 1 和 2、Castor、XMLBeans、JiBX 和 XStream。 由于它是一个独立的模块,您也可以在其他环境中使用它。
  • 重用您的 Spring 专业知识:Spring-WS 使用 Spring 应用程序上下文进行所有配置,这使您能够快速启动和运行。此外,Spring-WS 的架构类似于 Spring-MVC。
  • 支持 WS-Security:WS-Security 允许您对 SOAP 消息进行签名、加密和解密,或对其进行身份验证。它还集成了 Spring Security

了解更多关于 Spring Web Services 的信息,请参加 2007 年 12 月 12 日至 15 日在佛罗里达州好莱坞威斯汀外交官酒店举行的The Spring Experience大会。Arjen 将在那里发表两场关于 Spring Web Services 的演讲:介绍 Spring Web Services使用 Web Services 进行 WS-DuckTyping

有关自 1.0-RC2 以来的修复列表,请参阅发布说明

最后,非常感谢所有参与者。没有你们,这一切是不可能的!

阿姆斯特丹 Java Meetup 2007 年第三季度,9 月 21 日

工程 | Alef Arendsen | 2007 年 8 月 2 日 | ...

又到了下一次 Java Meetup 的时间了。我决定将这个季度活动在阿姆斯特丹的第七次会议推迟到夏末,因为荷兰的大多数人会在八月左右休几周假。

我查看了我们的内部日程,似乎 9 月 21 日是 9 月份唯一剩下的日子,所以我希望它也适合其他人的日程。

我们将在与去年四月会议相同的地点举行,这对我们来说非常方便,并且大家似乎都觉得没问题。有史以来第一次 Java Meetup 是在我最喜欢的阿姆斯特丹聚会场所举行的…

Spring Framework 2.1 M3 发布

发布 | Juergen Hoeller | 2007 年 8 月 1 日 | ...

亲爱的 Spring 社区:

我很高兴地宣布 Spring 2.1 M3 已发布!

这是 Spring 2.1 系列中的第三个里程碑版本,引入了集合的自动装配、"bean(name)" 切点元素、各种 JDBC 增强、JRuby 1.0 支持以及框架中的许多改进。

Spring 2.1 M1 Released

 

有关此版本中引入的新功能的更多详细信息,请参阅变更日志JIRA 路线图

供参考,我们还发布了 2.0.7 快照,其中包含从 2.1 M3 回迁的修复。请尝试使用最新的快照作为 2.0.5/2.0.6 的直接替代!正式的 2.0.7 版本计划于 8 月 15 日发布。 

祝好, 

Juergen Hoeller
Spring Framework 开发主管
Interface21 - http://www.interface21.com

揭穿神话:代理影响性能

工程 | Alef Arendsen | 2007 年 7 月 19 日 | ...

在最近的一篇博客文章中,Marc Logemann 触及了代理性能的话题。在他的文章中,他请求一份由“Spring 团队”撰写的白皮书。我不想花大量篇幅讨论代理和字节码织入机制之间的纳秒级差异,但我认为有必要再次重申它们之间的差异以及这种讨论是否重要。

什么是代理?为什么我们使用它们?

首先简要回顾一下代理(通常以及在 Spring 中)的用途。根据 GoF(四人帮)的《设计模式》一书,代理是另一个对象的替代或占位符,用于控制对其的访问。由于代理位于对象的调用者和实际对象之间,它可以决定阻止调用实际(或目标)对象,或者在调用目标对象之前做一些事情。prox.jpg

换句话说,代理可以用作实际对象的替代品,以向这些对象应用额外行为——无论是与安全性相关的行为、缓存还是性能测量…

Grails 和 Maven:一段不便的结合

工程 | Dave Syer | 2007 年 7 月 14 日 | ...

引言

Grails 似乎正在不断发展壮大,而且正如他们所说,它看起来肯定“有前途”。我对在 Web 应用程序领域之外稍微扩展一下它的应用非常感兴趣。如果您了解我在Spring Batch方面的工作,您可能就能猜到这会带我去哪里。但在这篇文章中,我只想分享一些我在 Grails 应用程序的基础、低层部署和构建方面的经验。

我对 Maven 2 又爱又恨,而且我正在学习喜爱 Grails,但遗憾的是,两者并不十分兼容。这将…

Setter 注入 vs 构造函数注入以及 @Required 的使用

工程 | Alef Arendsen | 2007 年 7 月 11 日 | ...

几个月前,我们开始在 www.springframework.org 上发布投票,请大家提供关于 Spring、其某些特性以及他们如何使用这些特性的反馈。我提出的第一个问题是人们是否检查必需的依赖项,如果是,他们使用了什么机制。我很快就接着这个问题问社区使用了什么样的事务管理策略。

令我高兴的是,当我第一次查看结果时,早在三月份,很多人通过在第一次投票中投票告诉我们他们正在使用 @Required 注解。第二次…

Java EE 6 做对了

工程 | Rod Johnson | 2007 年 7 月 3 日 | ...

Java EE 6 提案 (JSR 316) 于今天发布。我相信这将是自该平台近 10 年前发布以来最重要的修订版,并且应该受到技术用户的欢迎。Interface21 很高兴成为这个 JSR 的支持者,我期待着为其做出贡献。

Java EE(在其大部分历史中被称为 J2EE)在创建 Java 中间件市场方面发挥了重要作用。然而,在这 10 年里,该平台出现了一些重要问题,例如

  • 符合 Java EE 标准的服务器需要包含一系列对于绝大多数用户来说几乎没有兴趣的功能,导致其臃肿
  • 自设想 J2EE 以来,企业需求已经发生了变化,并且“一刀切模式”越来越不适用
  • 开源框架的出现极大地增强了企业 Java 的实力,这些框架使开发人员更具生产力,并使其生产应用程序更高效、更易维护
  • Ruby on Rails,甚至 .NET 等新挑战表明,在快速变化和创新的时代,舒适的 2-3 年发布周期会危及整个平台

Java EE 6 是该平台的一次重要修订,它…

开源正在消亡吗?证据不足

工程 | Rod Johnson | 2007 年 6 月 29 日 | ...

Michael Hickins 最近在 eWeek 上发表了一篇题为开源正在消亡吗?的文章。标题吸引了我,也无疑吸引了很多人。但这篇文章并没有证明这个论点,尽管其中包含了一些值得讨论的有趣观点。

文章的大部分内容涉及对政府使用开源的经验以及 IBM 等供应商动机的猜测。我更喜欢根据公司和个人的行动来判断他们,而不是猜测他们的动机,而且有大量证据表明,例如,IBM 非常重视开源。有很多…

Spring IDE 2.0 正式版发布

发布 | Christian Dupuis | 2007 年 6 月 27 日 | ...

在修复了大约 250 个 bug 并付出了无数小时努力添加对 Spring 2.0、Spring Web Flow、Spring AOP 和 Spring JavaConfig 的支持之后,我们自豪地宣布 Spring IDE 2.0 现已发布。

Spring IDE 2.0 Logo

下载 | 文档 | 变更日志

该版本可从我们的发布更新站点获取。Spring IDE 2.0 根据 Eclipse Public License - v1.0 的条款获得许可。

新功能

Spring IDE 2.0 包含许多新功能和大量的 bug 修复。所有已关闭的 ticket 列表可在我们的ticket 系统中找到。对于不熟悉 Spring IDE 最新开发的人,以下是包含的功能简短列表

  • 支持Spring 2.0 基于命名空间的配置。我们为此投入了大量工作,使其支持尽可能具有可扩展性。您可以在另一篇帖子中了解更多信息。
  • 支持Spring Web Flow,包括对 WTP XML 编辑器的内容辅助和超链接扩展,以及验证和图形编辑。更多信息可在此处获取
  • Spring AOP 基于开发的工具。这包括支持验证配置(解析切点表达式)以及基于 <aop:config> 和 @AspectJ 风格切面的横切引用可视化。
  • 支持Spring JavaConfig M2。这作为测试 Spring IDE 核心扩展点的沙箱。在此处此处阅读更多信息
  • 可用性和 UI 改进:新的Spring Explorer替换了Beans View,向 Eclipse 的 Project Explorer 贡献内容,一种Spring Working Set 类型用于减少 Project 和 Spring Explorer 中的杂乱,针对 Java 包和类的重命名和移动重构以及 Bean 名称的重构参与者,新的项目和 Spring Bean 配置文件向导。

Spring IDE 2.0 与即将发布的 Eclipse 3.3 (又称 Eclipse Europa) 兼容。

Spring IDE 博客阅读更多信息。

获取 Spring 新闻通讯

订阅 Spring 新闻通讯,保持联系

订阅

领先一步

VMware 提供培训和认证,助您加速进步。

了解更多

获取支持

Tanzu Spring 通过一个简单的订阅提供 OpenJDK™、Spring 和 Apache Tomcat® 的支持和二进制文件。

了解更多

即将举行的活动

查看 Spring 社区所有即将举行的活动。

查看全部