Spring Web Flow 1.0 RC4 发布

发布 | Keith Donald | 2006 年 10 月 05 日 | ...
亲爱的Spring社区,
 
我们很高兴地宣布 Spring Web Flow 1.0 RC4 已发布。
 

 

Spring Web Flow 是 Spring 社区的一个产品,专注于协调 Web 应用程序中的用户界面流程。

此版本包含许多改进和几个令人兴奋的新功能。我们认为它是迄今为止最稳定的版本,并且最终,此版本使 Spring Web Flow 1.0 最终路线图功能完善。Spring Web Flow 1.0 最终版将于下周发布,改动极小。在此期间,我们鼓励您测试 1.0 RC4,以帮助在 1.0 正式发布前发现任何剩余问题。

请注意,此版本中存在影响用户的更改。1.0 RC3 或更早版本的用户应查阅 升级指南,其中详细概述了这些更改。

1.0 RC4 中的新增和值得注意的特性列表令人兴奋,包括:

新增和值得注意

作为 Spring Web Flow 1.0 最终版之前的最后一个发布候选版,Spring Web Flow 1.0 RC4 引入了强大的新功能,例如渲染动作 (1)、评估动作 (2)、设置动作 (3)、闪存范围 (4)、流程执行属性 (5) 和始终在暂停时重定向 (6)。它提供了增强的文档、更好的流程定义验证、智能默认值以及用于配置流程执行引擎的完整自定义 Spring 2.0 配置模式 (7)。

  • (1) 渲染动作在响应渲染之前执行应用程序行为。当视图状态被要求进行可渲染视图选择时,渲染动作会被调用,无论是在进入时还是在由重定向或浏览器刷新按钮触发的刷新时。以下示例显示了一个渲染动作,它在呈现结果视图之前执行电话簿搜索。

    <view-state id="displayResults" view="searchResults">
        <render-actions>
            <bean-action bean="phonebook" method="search">
                <method-arguments>
                    <argument expression="flowScope.searchCriteria"/>          
                </method-arguments>
                <method-result name="results"/>
            </bean-action>
        </render-actions>
        <transition on="newSearch" to="enterCriteria"/>
        <transition on="select" to="browseDetails"/>
    </view-state>

  • (2) 评估动作根据流程执行状态评估表达式。表达式(默认基于 OGNL)可以针对流程执行的根 RequestContext 可访问的任何对象,包括任何范围(例如流程范围)中的对象。以下示例显示了一个评估动作,它调用“game”流程范围 bean 上的“makeGuess”方法
    <action-state id="makeGuess">
        <evaluate-action expression="flowScope.game.makeGuess(requestParameters.guess)">
            <evaluation-result name="guessResult"/>
        </evaluate-action>
        <transition on="CORRECT" to="showAnswer"/>
        <transition on="*" to="enterGuess"/>
        <transition on-exception="java.lang.NumberFormatException" to="enterGuess"/>
    </action-state>
  • (3) 设置动作设置范围类型(如流程范围)中的属性值。属性可以是顶级属性,也可以是嵌套属性路径中的属性。以下示例显示了一个设置动作,它将闪存范围中的“fileUploaded”属性设置为“true”。
    <action-state id="uploadFile">
        <action bean="uploadAction" method="uploadFile"/>
        <transition on="success" to="selectFile">
            <set attribute="fileUploaded" scope="flash" value="true"/>
        </transition>
    </action-state>
  • (4) 闪存范围是一种新的范围类型,用于在重定向和视图的任何刷新之间持久化属性。当事件被信号通知从视图中转换时,闪存范围将被清除。以下完整的流程定义示例显示了使用闪存范围将“fileUploaded”属性公开给 selectFile 视图状态,以便在成功上传后显示成功消息。
    <flow xmlns="http://www.springframework.org/schema/webflow"
            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
            xsi:schemaLocation="http://www.springframework.org/schema/webflow
                                           http://www.springframework.org/schema/webflow/spring-webflow-1.0.xsd">
   
        <start-state idref="selectFile"/>
       
        <view-state id="selectFile" view="fileForm">
            <transition on="submit" to="uploadFile"/>
        </view-state>
   
        <action-state id="uploadFile">
            <action bean="uploadAction" method="uploadFile"/>
            <transition on="success" to="selectFile">
                <set attribute="fileUploaded" scope="flash" value="true"/>
            </transition>
        </action-state>
       
    </flow>
  • (5) 流程执行属性允许您设置自定义属性,这些属性可以影响流程执行行为。以下示例显示了在 Portlet 环境中将“alwaysRedirectOnPause”属性设置为 false 的指令(其中重定向通常不适用)。
    <flow:executor id="flowExecutor" registry-ref="flowRegistry">
        <flow:execution-attributes>
            <flow:alwaysRedirectOnPause value="false"/>
        </flow:execution-attributes>
    </flow:executor>
  • (6) “始终在暂停时重定向”为您提供默认的 POST+REDIRECT+GET 行为,无需特殊编码。现在,默认情况下,当进入视图状态时,会自动发出重定向。这会触发对流程执行 URL 的刷新,该 URL 在会话处于活动状态时保持稳定。
  • (7) 新的 Spring 2.0 配置方言极大地简化了系统配置并提供了强大的验证和工具支持。配置 webflow 的基础设施现在只需定义两个元素,如下完整所示
    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xmlns:flow="http://www.springframework.org/schema/webflow-config"
           xsi:schemaLocation="
               http://www.springframework.org/schema/beans
               http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
               http://www.springframework.org/schema/webflow-config
               http://www.springframework.org/schema/webflow-config/spring-webflow-config-1.0.xsd">
   
        <!-- Launches new flow executions and resumes existing executions. -->   
        <flow:executor id="flowExecutor" registry-ref="flowRegistry"/>
       
        <!-- Creates the registry of flow definitions for this application -->
        <flow:registry id="flowRegistry">
            <flow:location path="/WEB-INF/flows/**-flow.xml"/>
        </flow:registry>
       
    </beans>

有关这些功能的更多信息,请参阅参考手册。Spring Web Flow 1.0 RC4 进一步完善了参考文档,提供了 70 页关于 SWF 用法的内容。手册可在线获取 HTMLPDF 格式。

入门

开始使用 Spring Web Flow 的最佳方法之一是查看和演练示例应用程序。我们建议查看所有示例,并根据需要从一开始就补充参考手册材料。此版本附带了十个示例应用程序,每个应用程序都演示了一组独特的产品功能。这些示例是

  1. 电话簿 - 演示大多数功能(包括子流程)的原始示例
  2. 售卖商品 - 演示带有条件转换、流程执行重定向、自定义文本字段格式和续期的向导
  3. 流程启动器 - 演示启动和恢复流程的所有可能方式
  4. 项目列表 - 演示 REST 风格的 URL 和内联流程
  5. 运费 - 演示 Spring Web Flow 与 Ajax 技术结合使用
  6. 猜数字 - 演示有状态 bean、评估动作和“单一键”流程执行重定向。
  7. 生日 - 演示 Struts 集成
  8. 文件上传 - 演示多部分文件上传、设置动作和闪存范围
  9. 电话簿-Portlet - Portlet 环境中的电话簿示例(请注意流程定义没有改变)
  10. 售卖商品-JSF - JSF 环境中的售卖商品示例

要快速评估示例应用程序,只需

  1. 解压 spring-webflow-1.0-rc4.zip 发布归档文件
  2. 访问 projects/spring-webflow/build-spring-webflow 目录
  3. 执行“ant dist”目标。
  4. 请参阅“target/artifacts”目录,其中包含每个示例的可部署 .war 文件以及已解压的 war 目录。
有关发布归档内容和示例的更多信息,请分别参阅 release readme.txt 和 projects/spring-webflow/spring-webflow-samples/readme.txt。

所有示例项目都是 Spring IDE 项目,可直接导入 Eclipse。

感谢所有支持此版本的人。Spring Web Flow 1.0 终于...指日可待。

祝您使用愉快!

Spring Web Flow 团队

Spring 2.0 最终版发布

发布 | Rod Johnson | 2006 年 10 月 3 日 | ...

我们很高兴地宣布,备受期待的 Spring Framework 2.0 最终版现已发布。

Spring 2.0 Released

下载 | 文档 | 更新日志 

作为领先的全栈 Java/Java EE 应用程序框架,Spring 为许多项目带来了显著的好处,减少了开发工作和成本,同时提高了测试覆盖率和质量。

经过 9 个月的积极开发,这个稳定、生产级的版本终于发布了。在如此短的时间内,Spring 2.x 系列已经取得了巨大的成熟,受益于 9 个里程碑版本的超过 150,000 次早期访问下载,解决了超过 750 个 JIRA 问题,其中 50 个引入了主要的新功能。

有什么新内容?

我们相信三个属性概括了用户对 Spring 2.0 系列的期望:简单强大成熟


2.0 版对框架的整体使用模型带来了重大简化。正如我们现有用户所知,Spring 的核心是 Bean 容器,它驱动您的 Java 和 Java EE 应用程序的配置。在 2.0 版中,通过引入自定义 Bean 配置方言,许多常见的配置任务得到了简化。这对您意味着什么?

这意味着您现在可以

  • 在一行配置代码中使您的业务服务具有事务性。
  • 在一行配置代码中从 JNDI 查找对象。
  • 在一行配置代码中将外部化属性公开给您的服务。
  • 使用单个注解将一致的异常处理策略应用于您的数据访问对象。
  • 通过定义单个配置标签调用无状态远程 EJB。不再需要自定义服务定位器或业务委托。
简化继续贯穿框架的模块,让您能够
  • 在一行代码中编写参数化 JDBC 查询。
  • 在部署 Spring MVC 控制器时应用约定优于配置
  • 在开发输入表单时使用 Spring JSP 标签减少输入。


Spring 2.0 的一个主要目标是让常见任务变得更容易。2.0 版本也为以优雅的方式解决更困难的问题开辟了令人兴奋的新途径。在 2.0 中,您可以

  • 使用 AspectJ 简洁的切入点表达式语言,将自定义行为编织到程序执行的多个点。
  • 以事务和线程安全保证接收异步 JMS 消息。观看演示
  • 为您的应用程序开发自己的Bean 配置方言
  • 以线程安全的方式从自定义范围(如“请求”和“会话”范围)注入对象。
  • 从您的 Java 应用程序调用 Groovy、Beanshell 和 JRuby 脚本。
  • 使用复杂的线程和池选项异步调度任务。

2.0 版建立在 Spring 1.x 奠定的基础之上。这个新版本提供了主要的新功能,同时尽可能保持向后兼容性。

自 2004 年 3 月发布以来,Spring 1.x 已被下载超过一百万次,使使用普通 Java 对象 (POJO) 开发复杂应用程序成为事实上的标准。2.x 系列在此广泛认可的最佳实践之上,提供了新的简化和强大功能,同时完全兼容已建立的 Spring 1.x 系列。用户可以期望他们的升级是直接的;在大多数情况下,只需将 1.2.8 JAR 文件替换为 Spring 2.0 中包含的 JAR 文件。

请享受,并感谢您

Spring 2.0 代表了过去一年许多人的共同努力。从 Interface21 的主要开发人员 Juergen、Rob、Rick 和 Costin,到我们的支持合作伙伴 BEA 和 Oracle,再到社区中贡献创新、补丁、文档、错误报告和测试的许多人——这里面包含了大量的汗水、努力和泪水。我们衷心希望您在使用这个新版本时感到像我们构建它时一样快乐。享受它吧,并且请放心:工作不会止步于此。

此致,

Spring 团队

 


其他资源

  • 参加 2006 年 Spring 体验大会,这是 Spring 社区的顶级会议,将于 12 月 7 日至 10 日在佛罗里达州好莱坞举行。在 10 月 16 日前注册可为您的团队获得早鸟折扣。
  • 通过路线图跟踪未来的 Spring 2.x 开发
  • 请收藏此页面,以获取更多演示新 2.0 功能的截屏视频和代码示例。

Spring 2.0 候选发布版 4 发布

发布 | Juergen Hoeller | 2006年9月17日 | ...

我们很高兴地宣布 Spring 2.0 RC4 已发布。 下载 | 文档 | 更新日志

这是 Spring 2.0 最终版本之前的最后一个候选发布版。  RC4 包含了许多进一步的错误修复和各个领域的改进,以及一些次要的新功能(例如在 JMS 支持中)。请参阅更新日志和JIRA 问题列表,了解所有详细信息。  最值得注意的变化包括...

新增和值得注意

  • 此版本为 2.0 DTD 和 XSD 引入了带版本的文件名。如果您的 Bean 定义文件基于 2.0 XSD 或 2.0 特定的 DTD 功能,请调整它们。  例如:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
            xsi:schemaLocation="
                http://www.springframework.org/schema/beans
                http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">

    <!-- 在此处定义您的 Bean -->

</beans>

  • 如您所料,Spring 1.2 DTD 在其已建立的 spring-beans DTD 文件名下仍然得到完全支持。
  • 2.0 XML 配置元素和属性现在已针对我们支持的每个模式进行了完整文档记录。  特别感谢 Rick Evans 在这方面的贡献。
  • Apache OJB 支持 (org.springframework.orm.ojb) 从此版本起不再随核心 Spring 发行版提供。它现在可从Spring Modules 项目获取。
  • Spring 的 JPA 支持现已针对 Oracle TopLink Essentials v2 b16 以及 Hibernate EntityManager 3.2.0 CR2 进行了全面测试。我们广泛的集成测试套件现在完全通过了这两个 JPA 提供商的测试。我们目前正在以同样的方式覆盖 OpenJPA。

我们期待您对该版本的反馈。

祝好,

Juergen Hoeller
Spring 框架开发负责人

Spring LDAP 1.1 发布

发布 | Mattias Arthursson | 2006年8月28日 | ...

亲爱的Spring社区,

我们很高兴地宣布 Spring LDAP 1.1 版本发布。这是该库作为 Spring Framework 子项目发布的第一个版本。下载 | 文档 | API

关于 Spring LDAP
Spring LDAP 是一个 Java 库,基于 Spring 的 JdbcTemplate 模式,用于简化 LDAP 操作。该框架将用户从查找和关闭上下文、遍历 NamingEnumerations、编码/解码值和过滤器等繁重工作中解放出来。

LdapTemplate 类封装了传统 LDAP 编程中涉及的所有底层工作,例如创建、遍历 NamingEnumerations、处理异常和清理资源。这使得程序员能够处理重要的事情——在哪里查找数据(DN 和过滤器)以及如何处理它(映射到领域对象和从领域对象映射、绑定、修改、解绑等),就像 JdbcTemplate 将程序员从实际的 SQL 和数据如何映射到领域模型之外的所有工作中解放出来一样。

除此之外,Spring LDAP 还提供从 NamingExceptions 到 DataAccessExceptions 的异常转换,以及用于处理过滤器、LDAP 路径和属性的多个实用工具。

Spring-LDAP 需要 J2SE 1.4。构建需要 J2SE 1.4。运行示例需要 J2EE 1.4(Servlet 2.3,JSP 1.2)。

从何开始
从上面的链接下载分发包。分发包包含详尽的 JavaDoc 文档以及完整的参考文档和示例应用程序,说明了使用 Spring LDAP 的不同方式。

主页
Spring LDAP 的永久主页是 http://www.springframework.org/ldap

历史
Spring LDAP 基于 SourceForge LdapTemplate 项目。建议 LdapTemplate 用户切换到 Spring LDAP。

Mattias Arthursson & Ulrik Sandberg
Spring LDAP 项目团队

Spring 2.0 发布候选版本 3 发布

发布 | Juergen Hoeller | 2006年8月11日 | ...

亲爱的 Spring 社区:

我们很高兴地宣布 Spring 2.0 RC3 已经发布。  下载 | 文档 | 更新日志

这第三个发布候选版本包含了许多基于我们收到的前一个发布候选版本用户宝贵反馈的改进。 随着此版本的发布,Spring 2.0 最终版本即将到来。

最重要的改进包括:

  • Spring 1.2 对 default-lazy-init="true" 的兼容性已恢复,涉及通过类型检测特殊 Bean(如 PropertyPlaceholderConfigurer)。同时,延迟类加载也已重新设计,允许在类名中使用占位符等。对于特殊的 ApplicationContext,仍然可以强制执行严格的延迟类加载。
  • 现在 Hibernate3、JDO 和 TopLink 也支持基于 @Repository 注解的持久化异常转换,而不仅仅是 JPA。 异常转换现在尽可能基于底层 ORM 工具的本地异常,只有明确指定时才应用 Spring 特定的 SQLException 转换。
  • 在我们的 JMS 支持中,DefaultMessageListenerContainer 具有优化的资源处理功能(在 JBoss 4.0 上也有效),并且能够从损坏的 Connection 或 Destination 中恢复。JMS 资源的缓存现在完全可配置,为 XA 和非 XA 场景都提供了合理的默认值。此外,JmsTemplate 在 JTA 事务中重用缓存的 JMS 资源。
  • Servlet 和 Portlet Web MVC 现在支持通用的 WebRequestInterceptor 抽象,这允许 Open Session/EntityManager/等在 View 拦截器中跨 Servlet 和 Portlet 环境重用。因此,所有这些 Portlet 特定的拦截器都已弃用,转而使用新的通用拦截器(OpenSessionInViewInterceptor 等)。

当然,细节上还有许多进一步的改进。请参阅更新日志文件(以及 JIRA 中的更新日志)了解详细信息。

如果您在 RC3 中遇到任何剩余问题,请告诉我们。 Spring 2.0 最终版本即将发布。

Juergen Hoeller,
Spring Framework 开发负责人

Spring 2.0 RC2 发布

发布 | Juergen Hoeller | 2006年7月6日 | ...

亲爱的 Spring 社区:

我们很高兴地宣布 Spring 2.0 RC2 已发布。  下载 | 文档 | 更新日志

这是 Spring 2.0 最终版本之前的第二个发布候选版本。它引入了多项错误修复和细微改进,特别是在 AOP 框架和 JPA 支持方面。请参阅更新日志了解详情。在即将发布的 2.0 RC3 版本中,还将解决一些已知问题;详情请参阅我们的 JIRA 路线图。

请使用此版本尝试您的应用程序,并告知我们您可能遇到的任何问题!需要强调的是,Spring 2.0 提供了与 Spring 1.x 系列的向后兼容性。  Spring 2.0 还继续支持 JDK 1.3+J2EE 1.3+(甚至 J2EE 1.2+,除了 JSP 标签和 EJB 支持)。兼容性对我们的用户群至关重要,我们致力于提供它。因此,我们也对在任何此类平台上可能出现的兼容性问题感兴趣。

感谢各位对本次发布的所有反馈。  我们期待在 2.0 GA 发布日期前收到更多反馈!

祝好,

Juergen Hoeller
Spring 2.0 产品开发负责人

Spring Web Flow 1.0 RC3 发布

发布 | Keith Donald | 2006年6月26日 | ...
 

亲爱的Spring社区,

我们很高兴地宣布 Spring Web Flow (SWF) 1.0 RC3 (发布候选版3) 已发布。  下载 | 文档 | 更新日志

这个稳定版本包含了错误修复和次要改进。   目前我们预计这将是 Spring Web Flow 1.0 最终版本发布前的最后一个候选版本,最终版本即将发布。  值得注意的改进包括...

值得注意的改进

改进了流程异常层次结构。  总体而言,异常层次结构现在更清晰地组织了从流程定义访问(FlowLocatorException)到运行时流程执行(FlowExecutionException)和执行持久性(FlowExecutionRepositoryException)的故障类别。

 

改进了在 Portlet 环境中使用后退按钮的支持。  结合基于延续的存储库,SWF 在 Portlet 环境中支持在流程处于活动状态时完全使用浏览器导航按钮(后退、刷新)。  当流程执行终止时,浏览器刷新将自动触发新的执行启动。

更简单的默认 JSF 视图映射。  现在,默认情况下,SWF 视图名称应与 JSF 视图 ID 完全对应。您将在 sellitem-jsf 示例中看到此默认设置——请注意视图是如何像标准 JSF 导航处理程序一样被引用为 "/priceAndItemCountForm.jsp" 的。  这允许自然地支持其他 JSF 视图技术,例如 Facelets,并且对于 JSF 开发人员来说是一个更自然的默认设置。  如果您需要自定义 SWF 到 JSF 视图映射,请将自定义 ViewIdMapper 插入到您的 FlowPhaseListener 中。

示例应用程序简化。  我们简化了 fileupload、flowlauncher、birthdate 和 sellitem 示例,以利用 Spring Web Flow 的最新功能和最佳实践。

潜在的用户影响变更

在通往 1.0 最终版本的道路上,1.0 RC3 存在一些潜在的用户影响变更。  以下部分将对此进行说明。

为了简化,移除了 FormAction 属性 "validateUsingValidatorMethod"。  经验表明,此属性是新用户的困惑来源。  作为更好的替代方案,要在不进行验证的情况下执行数据绑定操作,只需从您的流程定义中调用 "bind" 动作方法即可。  当您需要分步验证时,只需调用 "bindAndValidate" 或 "validate",并将 "validatorMethod" 属性设置为特定的验证器方法即可。  请参阅 sellitem 示例。

StateExceptionHandler 已重命名为 "FlowExecutionExceptionHandler"。 这会影响自定义处理程序实现。  要升级,只需实现新的接口;其签名在逻辑上是相同的。

FlowExecutorImpl 的 "redirectOnPause" 属性现在接受布尔值而不是 RedirectType 枚举。  从 1.0 RC2 开始,SWF 中只有一种重定向类型——流程执行重定向。  将此标志设置为“true”会在每次流程执行通过进入视图状态而暂停时触发它。  请参阅 Numberguess 或 sellitem 示例。
--------

开始使用 Spring Web Flow 的最佳方法之一是查看和演练示例应用程序。  我们建议从一开始就查看所有示例,并根据需要补充参考手册材料。1.0 RC3 版本附带了十个示例应用程序,每个都展示了不同的产品功能集。  这些示例是:

1. 电话簿 - 展示大多数功能(包括子流程)的原始示例
2. 销售商品 - 展示带条件转换、流程执行重定向、会话作用域和延续的向导
3. 流程启动器 - 展示启动和恢复流程的所有可能方式
4. 商品列表 - 展示 REST 风格 URL 和内联流程
5. 运费 - 展示 Spring Web Flow 与 Ajax 技术结合(感谢 Steven Devijver)
6. 猜数字 - 展示有状态 bean 和“单键”流程执行重定向。
7. 生日 - 展示 Struts 集成
8. 文件上传 - 展示多部分文件上传
9. 电话簿-Portlet - Portlet 环境中的电话簿示例
(请注意流程定义没有变化)
10. 销售商品-JSF - JSF 环境中的销售商品示例

祝您使用愉快!

Spring Web Flow 团队

Keith Donald
Erwin Vervaet
Juergen Hoeller
Colin Sampaleanu
Rob Harrop

Spring 2.0 RC1 发布

发布 | Juergen Hoeller | 2006年6月21日 | ...

亲爱的 Spring 社区:

我们很高兴地宣布 Spring 2.0 RC1 已发布。  下载 | 文档 | 更新日志

这是 Spring 2.0 在过去六个月发布五个里程碑版本后的第一个发布候选版本。这个稳定版本正在等待广泛的用户反馈,目标是在七月初发布 2.0 最终版本。

Spring 2.0 的主要新主题是:

  1. 简化配置 - 您会发现您编写的代码总量大大减少,以配置您的应用程序。  您编写的代码是高级的、领域特定的,受益于智能默认值以及丰富的验证和工具支持。

  2. 强大的 AOP 统一 - 您可以使用 AspectJ 简洁地将切面编织到您的对象之前、之后和周围,从而应用自定义行为,同时仍然受益于 Spring AOP 运行时的简单性。

  3. JSR 220 Java Persistence Architecture (JPA) - 为您提供持久性提供者实现的选择。  Spring 是第一个在 JEE 和 JSE 环境中都支持 JPA 的框架,并且两者之间具有完全的可移植性。

  4. 异步 JMS 消息传递 - 消息驱动的 POJO 为 JSE 环境带来了轻量级的异步组件,并可选择 JMS 提供商。

  5. JSR-168 Portlets - Spring Portlet MVC 提供了一个用于开发 JSR 168 Portlet 的框架,其中包括与 Spring Web Flow 集成,以协调用户交互。

需要强调的是,Spring 2.0 提供了与 Spring 1.x 系列的向后兼容性。  兼容性对我们的用户群至关重要,我们致力于提供它。

这些领域的其他主要新功能包括...

配置简化
  • 基于 XML schema 的 bean 定义,以及用于简化常见配置任务的开箱即用的 XML 命名空间
  • 支持应用程序上下文中的扩展 bean 作用域,主要目标是 Web 请求和会话作用域
  • Bean 定义增强:bean 类的延迟加载、集合合并和智能错误消息
AOP
  • 基于 XML 模式命名空间的简化 AOP 配置
  • 支持 AspectJ 切点表达式语言和 @AspectJ 风格的切面
  • 支持对任何对象进行依赖注入,包括细粒度领域对象(基于 AspectJ)
持久化和 JPA
  • 增强的 JDBC 支持:命名 SQL 参数,基于泛型的 SimpleJdbcTemplate
  • 明确支持 Hibernate 3.1 和 3.2(同时保持与 Hibernate 3.0 的兼容性)
  • 支持 Java 持久化 API (JPA),包括完整的容器契约和类仪器
调度和消息传递
  • 用于提交异步工作的 TaskExecutor 抽象
  • 支持各种线程池,例如 Java 5 ThreadPoolExecutor 和 CommonJ WorkManager
  • 支持基于消息监听器容器的异步 JMS(“消息驱动 POJO”)
Web 应用程序开发
  • 基于约定的 Web MVC:控制器映射、模型属性名称
  • 用于 Spring Web MVC 和 Spring Web Flow 的 JSP 表单标签库
  • 全面支持 Portlet 环境,包括基于 DispatcherPortlet 的 Portlet 风格 MVC

... 以及更多细节方面的诸多改进。

要查看这些功能的实际应用,请查阅发布包中 samples/jpetstore 目录下的 JPetstore 参考应用程序。  更多详细信息请参阅参考文档的 2.0 新特性 部分。

我们将在未来几天与 Maven2 社区合作,将 2.0 RC1 上传到 Maven 仓库。

感谢 Spring 社区为本次发布提供的所有反馈。  我们期待您为 2.0 GA 发布日期提供更多反馈!

祝好, 

Juergen Hoeller
Spring 2.0 产品开发负责人

Spring Web Services 1.0 M1 发布

发布 | Arjen Poutsma | 2006年6月12日 | ...

亲爱的 Spring 社区:

我很高兴地宣布 Spring Web Services 1.0 M1 已发布。下载 | 文档 | 更新日志

此版本是 Spring-WS 的第一个里程碑版本:一个由 Spring 社区主导,专注于创建文档驱动的 Web 服务的项目。

Spring-WS 1.0 M1 包括:

  • 基于 Apache Axiom 的流式 SOAP 消息模型,
  • 与 Acegi 集成的 WS-Security 支持,
  • JAXB 2.0 marshaller 支持,
  • 自 0.9.1 以来发现的许多进一步的改进和问题修复。

详情请参阅更新日志

有关 Spring-WS 及其目标的更多信息,请参阅 Spring-WS 主页

Spring Web Flow 1.0 RC2 发布

发布 | Keith Donald | 2006年6月10日 | ...


 

亲爱的Spring社区,

我们很高兴地宣布 Spring Web Flow (SWF) 1.0 RC2 (发布候选版 2) 已发布。  下载 | 文档 | 更新日志

此版本包含错误修复和次要改进。   1.0 RC2 的新功能和值得注意之处包括...

新特性和值得注意的改进

支持以可配置的方式将新启动的流程执行输入从其调用环境传递。  默认情况下,所有请求参数都作为输入暴露。  流程可以选择使用其输入映射器将此输入映射到其自身的本地作用域。  此映射器定义了流程的输入契约,无论流程是作为顶层流程还是子流程启动,该契约都是一致的。

考虑以下请求 URL 作为示例:

https://:8080/flights/search-flow?flightNumber=12345

默认情况下,当访问此 URL 时,后台的 FlowExecutor 会将 "flightNumber" 请求参数放入一个 "输入映射" 中。  然后将该输入映射传递给 "search-flow" 的新执行。

在 search-flow 定义中

<flow start-state="executeSearch">
    <input-mapper>
        <mapping source="flightNumber" target="flowScope.flightNumber"/>
    </input-mapper>

    ...
</flow>
上述 <input-mapper> 定义了流程的输入契约,声明此流程支持 "flightNumber" 输入属性。  当启动时提供了 flightNumber,它将被映射到 "flowScope" 中,名称为 "flightNumber"。  映射器还能够在映射操作期间执行类型转换。

要自定义流程执行输入映射的填充,例如,从请求路径或某些其他外部源拉取属性,请配置 "FlowExecutorImpl.inputMapper" 属性。

支持在 JSR168 Portlet 环境中进行流程执行和外部重定向。  结合基于延续的存储库,这允许在 Portlet 环境中使用浏览器导航按钮(后退、刷新)。  此外,在 Portlet 环境中,我们现在暴露了一个 "globalSessionMap" 属性,用于访问 Portlet Session APPLICATION_SCOPE 中的属性。

一个新的存储库工厂名为 "SingleKeyFlowExecutionRepositoryFactory"。 该实现为每个持久化流执行生成一个唯一的标识符。  它对于实现 1.0 EA "会话重定向" 语义很有用——即每次 POST 后,REDIRECT-GET 都会访问一个稳定的 "流执行 URL",该 URL 中嵌入了常量流执行键。  请参阅 NumberGuess 示例以进行说明。

引入了一个独立的“会话”子系统,所提供的流执行仓库实现会委托该子系统来划定管理流执行状态的逻辑会话。  此会话子系统完全独立于 Spring Web Flow 的其余部分,可在 SWF 之外使用,并可能随着时间的推移发展成为独立的模块。  核心服务接口包括:

public interface ConversationService {
    public Conversation beginConversation(ConversationParameters parameters);
    public Conversation getConversation(ConversationId id);
    public ConversationId parseConversationId(String encodedId);
}


public interface Conversation {
    public ConversationId getId();
    public void lock();
    public void end();
    public Object getAttribute(String name);
    public void setAttribute(String name, Object value);
    public void removeAttribute(String name);
    public void unlock();
}
当启动一个新的流程执行并需要在一个请求之外持久化时,存储库会调用 "beginConversation" 来启动一个新的逻辑
会话,并将属性放置在会话作用域中以跟踪执行状态。  同样,当流程执行结束时,管理会话也会结束,并且任何分配的状态都将被清理。

未来,我们期望在这个系统中提供强大的功能,包括通过 JMX 进行会话监控和管理,以及会话历史和统计数据。  我们还期望证明它适用于 Spring Web Flow 之外的其他环境。  特别感谢 Juergen Hoeller 和 Ben Hale 在此可移植会话服务抽象设计中的帮助。


潜在的用户影响变更

在通往 1.0 最终版本的道路上,1.0 RC2 存在一些潜在的用户影响变更。  以下部分将对此进行说明。

在 spring-webflow-dtd 中,我们为了与其他属性和元素名称保持一致,将 '<action/>' 元素属性 'resultName' 和 'resultScope' 分别重命名为 'result-name' 和 'result-scope'

为了简化,移除了 FormAction 属性 "bindOnSetupForm" 和 "validateOnBinding"。  经验表明,这些属性很少使用  并且一直是新用户的困惑来源。  作为更好的替代方案,要在进入视图状态之前执行数据绑定操作,只需从您的流程定义中调用 "bind" 动作方法即可。  要计算是否应为 bindAndValidate 尝试进行验证,请重写单个 "validationEnabled(RequestContext)" 钩子。

移除了 FormAction 的 "exposeFormObject" 动作方法。  简单地使用 "setupForm" 即可,这是首选方法。

FlowExecutionRepository 和 FlowExecutor SPI 接口已简化。  更多的逻辑现在封装在 FlowExecutionRepository 之后,包括生成的 FlowExecutionKeys 的结构和格式。  此外,FlowExecutionRepository 现在严格负责管理持久化的流程执行,别无他事。  “会话”这一附加概念不再为 SWF 核心所知。  这意味着几点:

  • 整个存储库接口更简单,更易于创建具有自定义 FlowExecutionKeys 的自定义 FlowExecutionRepositories。
  • SWF 核心词汇更强:流程执行器调用流程执行来执行流程。  超过一个请求仍然活动的执行将被持久化到存储库中。
  • 默认的存储库实现选择委托给一个独立的“会话子系统”来跟踪由执行系统驱动的会话状态,但对该系统的依赖是完全封装和可选的。

FlowExecutor 接口是 SWF 的入口点,它也为调用者简化了。  它现在封装了复杂内部类型(如 EventIds 和 FlowExecutionKeys)的知识,因此总体上更易于使用。
FlowExecutor 接口,作为 SWF 的入口点,也为调用者进行了简化。  它现在封装了复杂内部类型(例如 EventIds 和 FlowExecutionKeys)的知识,因此总体上更易于使用。

同样,对显式“会话重定向”的支持已被移除。  这表示移除了 "conversationRedirect:"
“view”前缀和“CONVERSATION”RedirectType。  要在 1.0 RC2 中实现相同的逻辑重定向语义,只需将 FlowExecutor 配置为 redirectOnPause 类型 FLOW_EXECUTION 和 repositoryFactory 为
SingleKeyFlowExecutionRepositoryFactory。
--

Spring Web Flow 1.0 RC2 进一步完善了参考手册,提供了 50 页关于 SWF 使用的资料。  该手册以 HTML 和 PDF 格式在线提供。

开始使用 Spring Web Flow 的最佳方法之一是查看和演练示例应用程序。  我们建议从一开始就查看所有示例,并根据需要补充参考手册材料。1.0 RC2 版本附带了十个示例应用程序,每个都展示了不同的产品功能集。  这些示例是:

1. 电话簿 - 展示大多数功能(包括子流程)的原始示例
2. 销售商品 - 展示带条件转换、流程执行重定向、会话作用域和延续的向导
3. 流程启动器 - 展示启动和恢复流程的所有可能方式
4. 商品列表 - 展示 REST 风格 URL 和内联流程
5. 运费 - 演示 Spring Web Flow 与 Ajax 技术结合使用
(感谢 Steven Devijver)
6. 猜数字 - 演示有状态 Bean 和“单键”流程
执行重定向。
7. 生日 - 展示 Struts 集成
8. 文件上传 - 展示多部分文件上传
9. 电话簿-Portlet - Portlet 环境中的电话簿示例
(请注意流程定义没有变化)
10. 销售商品-JSF - JSF 环境中的销售商品示例

要一步构建用于部署的示例应用程序,只需解压发布档案,访问 projects/spring-webflow/build-spring-webflow 目录,然后执行 "ant dist" 目标即可。  请参阅 release readme.txt 和
projects/spring-webflow/spring-webflow-samples/readme.txt 分别获取有关发布存档内容和示例的更多信息。
所有示例项目都是 Spring IDE 项目,可直接导入 Eclipse。

感谢所有支持本次发布的人。  目前,我们预计 SWF 的下一个版本将是 1.0 最终版,目标发布时间在六月底
。  如果有需要,仍有可能发布另一个 1.0 版本候选。  请务必关注 SWF 主页和
论坛以获取更新。

祝您使用愉快!

Spring Web Flow 团队

获取 Spring 新闻通讯

通过 Spring 新闻通讯保持联系

订阅

领先一步

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

了解更多

获得支持

Tanzu Spring 提供 OpenJDK™、Spring 和 Apache Tomcat® 的支持和二进制文件,只需一份简单的订阅。

了解更多

即将举行的活动

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

查看所有