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 持久化架构 (JPA) - 为您提供持久化提供者实现的选择。Spring 是第一个在 JEE 和 JSE 环境中都支持 JPA 并实现两者之间完全可移植性的框架。

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

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

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

这些领域的进一步主要新功能包括...

配置简化
  • 基于 XML Schema 的 Bean 定义,带有开箱即用的 XML 命名空间,用于简化常见的配置任务
  • 支持应用程序上下文中的扩展 Bean 作用域,主要目标是 Web 请求和会话作用域
  • Bean 定义增强:Bean 类的延迟加载、集合合并和智能错误消息
AOP
  • 基于 XML Schema 命名空间的简化 AOP 配置
  • 支持 AspectJ 切入点表达式语言和 @AspectJ 风格的切面
  • 支持对任何对象(包括细粒度领域对象)进行依赖注入(基于 AspectJ)
持久化与 JPA
  • 增强的 JDBC 支持:命名的 SQL 参数、基于泛型的 SimpleJdbcTemplate
  • 明确支持 Hibernate 3.1 和 3.2(同时保持与 Hibernate 3.0 兼容)
  • 支持 Java 持久化 API (JPA),包括带类 instrumenting 的完整容器契约
调度和消息
  • 用于提交异步工作的 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 的第一个里程碑版本:一个专注于创建文档驱动的 Web 服务的 Spring 社区产品。

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 作为示例

http://localhost: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 环境中支持流程执行和外部重定向。结合基于 Continuation 的存储库,这允许在 Portlet 环境中使用浏览器导航按钮(后退、刷新)。此外,在 Portlet 环境中,我们现在暴露了一个 "globalSessionMap" 属性,用于访问 Portlet Session APPLICATION_SCOPE 中的属性。

一个新的存储库工厂,名为 "SingleKeyFlowExecutionRepositoryFactory"。 此实现为每个持久化流程执行生成一个唯一的标识符。它对于实现 1.0 EA 的“对话重定向”语义非常有用——即每次 POST 后都会发生 REDIRECT-GET,并命中一个嵌入常量流程执行键的稳定“流程执行 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)的知识,因此总体上更容易使用。
与此类似,删除了对显式 "conversationRedirect" 的支持。这意味着删除了 "conversationRedirect:"

'view' 前缀和 "CONVERSATION" RedirectType。要使用 1.0 RC2 实现相同的逻辑重定向语义,只需配置一个 redirectOnPause 类型为 FLOW_EXECUTION 的 FlowExecutor,以及一个类型为
SingleKeyFlowExecutionRepositoryFactory 的 repositoryFactory。
SingleKeyFlowExecutionRepositoryFactory。
--

Spring Web Flow 1.0 RC2 进一步完善了参考手册,提供了 50 页的 SWF 用法说明。该手册可以在线获取 HTML 和 PDF 格式。

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

1. Phonebook - 演示大多数功能(包括子流程)的原始示例
2. Sellitem - 演示带条件转换的向导、流程执行重定向、对话作用域和 continuations
3. Flowlauncher - 演示启动和恢复流程的所有可能方式
4. Itemlist - 演示 REST 风格 URL 和内联流程
5. Shippingrate - 演示 Spring Web Flow 与 Ajax
技术结合使用(感谢 Steven Devijver)
6. NumberGuess - 演示有状态 Bean 和“单一键”流程
执行重定向。
7. Birthdate - 演示 Struts 集成
8. Fileupload - 演示 multipart 文件上传
9. Phonebook-Portlet - Portlet 环境下的 phonebook 示例
(注意流程定义没有改变)
10. Sellitem-JSF - JSF 环境下的 sellitem 示例

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

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

祝您使用愉快!

Spring Web Flow 团队

Spring Web Flow 1.0

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

 

产品负责人
Keith Donald,SpringSource
Erwin Vervaet,Ervacon
 
Spring Web Flow 是下一代 Java Web 应用程序控制器框架,允许开发人员将用户操作建模为可在任何环境中运行的高级模块,称为流程。该框架提高了生产力和可测试性,同时为强制执行导航规则和管理应用程序状态提供了强大的解决方案。  

全景

Spring Web Flow 允许开发人员构建可重用、自包含的...

Spring IDE 1.3.1 发布

发布 | Torsten Juergeleit | 2006 年 6 月 8 日 | ...

尊敬的 Spring 社区:

我们很高兴地宣布 Spring IDE 1.3.1 已发布。

此版本的 Spring IDE 提供了许多错误修复。完整列表请访问 http://springide.org/project/milestone/Release%201.3.1

更改

  • 现在只有在需要使用 BeansXmlEditor 时才需要 Web Tools
  • 修复了图像缓存中的资源泄漏问题
  • 更新至 Spring 1.2.8

更多详细信息可从项目网站获取 http://springide.org/

使用 Eclipse 的更新管理器从项目的更新站点 安装此版本 http://springide.org/updatesite/

有关错误报告,请提交工单到...

Acegi Security 1.0.0 发布

发布 | Ben Alex | 2006 年 5 月 30 日 | ...

经过两年半多的开发,我很高兴地宣布 Acegi Security 1.0.0 现已正式发布。

下载 | 文档 | 更新日志 

除了自 1.0.0 RC2 以来的 80 多项改进和修复之外,此新版本还包含多项更改以帮助新用户。这包括参考指南的重大重组和扩展(现在已超过 90 页),以及一个新的“极简”教程示例应用程序。

此外,还解决了新用户经常遇到的许多问题,例如

  • 自定义 403 消息(而不是使用 Servlet 容器的错误处理程序)
  • 检测 XML 文件重新格式化后损坏的属性输入
  • 一个新的注销过滤器。

我们还重构了 LDAP 服务,使 SecurityContextHolder 成为一个可插拔策略(特别适用于希望避免 ThreadLocal 的富客户端),并改进了 CAS 支持。

请访问此处查看详细更新日志。与往常一样,详细的升级说明包含在发布 ZIP 文件中。

项目网站 http://acegisecurity.org 提供了 Acegi Security 功能的附加信息、在线文档访问以及最新版本下载链接。下个月我将在 SpringOne 上就 Acegi Security 发表演讲,希望届时能见到您。

Spring 2.0 JPA 入门指南

工程 | Mark Fisher | 2006 年 5 月 30 日 | ...

这篇博客文章的目的是提供一个简单的分步指南,帮助您在 独立 环境中使用 Spring Framework 入门 JPA。虽然 JPA 规范最初是作为 EJB 3.0 的持久化机制,但幸运的是,人们认识到任何此类机制实际上都应该能够持久化简单的 POJO。因此,只需在 classpath 中包含几个 JAR 并配置一些 Spring Bean,您就可以在您喜欢的 IDE 中开始试验 JPA 代码。我将使用 Glassfish JPA——它是参考实现,基于 Oracle 的…

2006 年亚特兰大 DevCon

工程 | Ben Hale | 2006 年 5 月 26 日 | ...

我刚刚结束了在 2006 年亚特兰大 DevCon 的《Spring 2.0:新功能与值得注意之处》的演讲。首先我要说,这次大会非常棒。会场和组织者都是一流的。我要特别感谢 Burr Sutter 举办了这么一场精彩的大会。当会议中心没有无线网络,但你可以使用隔壁咖啡馆的网络时,你就知道事情进展顺利。这是好兆头!JUG 成员都非常博学(即使是那些不了解 Spring 的人),并提出了很棒的问题。我回答了关于 EJB 的问题…

Spring Framework 1.2.8 发布

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

尊敬的 Spring 社区:

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

这是一个维护版本,修复了之前 1.2.x 版本中发现的许多问题。大多数这些修复已从 2.0 M4 回移植,因此在那里已经可用。详细信息请参阅更新日志

Juergen
-----
Juergen Hoeller
Spring Framework 开发负责人
Interface21 首席架构师
http://www.springframework.org
http://www.interface21.com

Spring Web Flow 1.0 RC1 发布

发布 | Keith Donald | 2006 年 5 月 3 日 | ...

Spring Web Flow Logo

尊敬的 Spring 社区:

我们非常高兴地宣布 Spring Web Flow (SWF) 1.0 RC1 (Release Candidate 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 interface

执行 Game 与用户的交互流程定义可能看起来像: 

 Game flow

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

 Game beans

HigherLowerGame 实现也完全与 Spring 和 Spring Web Flow API 解耦。

增强的流程变量支持,在流程启动时自动创建。 流程变量的值甚至可以从后端的 Bean 工厂获取,从而受益于完整的依赖注入。变量的确切作用域是可配置的。

一种新的流程执行重定向响应类型,用于重定向到唯一的“流程执行 URL”。访问流程执行 URL 可以刷新先前进入 ViewState 的流程,允许从那里继续。该 URL 在对话处于活动状态且 continuation 点仍然有效时保持有效。这允许充分使用后退、前进、刷新和新窗口按钮,而无需页面缓存。

状态异常处理的改进,方便支持执行转换的状态异常处理程序。核心转换元素现在支持 on-exception 属性,该属性在发生异常时驱动转换到新状态。例如

过渡执行状态异常处理 

... 如果 placeOrder 方法抛出 AccountException,则将流程转换到 editAccount 状态。

流程属性映射支持的改进。 现在每个流程都可以配置一个 input-mapper,用于映射调用者启动流程时提供的输入。流程还可以配置一个 output-mapper,用于向终止流程的调用者暴露返回值。这些增强功能使得流程可以作为顶层流程和子流程重用而无需更改,因为输入和输出属性对于这两种情况都一致映射。

支持动态视图名称和目标状态表达式,允许方便地基于运行时计算 ViewState 的逻辑视图名称和转换的目标状态。

增强的 JSF 集成。JSF 集成现在支持逻辑重定向响应类型,包括 FlowExecutionRedirect、ConversationRedirect、FlowRedirect 和 ExternalRedirect。此外,对 FlowPhaseListener 的增强功能允许启动和刷新流程执行,而无需经过正式的导航步骤。预计 1.0 RC2 将增加更多 JSF 便利功能,并在 Portlet 环境中正式支持 JSF。

附加资源和入门方法

Spring Web Flow 1.0 RC1 进一步完善了参考手册,提供了 50 页关于 SWF 用法的重点内容。该手册提供在线 HTMLPDF 格式。

开始使用 Spring Web Flow 的最佳方法之一是回顾和逐步学习示例应用程序。我们建议从一开始就回顾所有示例,并根据需要补充参考手册材料。1.0 RC1 版本附带了九 (9) 个示例应用程序,每个应用程序演示了产品的一组不同功能。这些示例是

1. Phonebook - 演示大多数功能(包括子流程)的原始示例。
2. Sellitem - 演示带条件转换、流程执行重定向、对话作用域和 continuations 的向导。
3. Flowlauncher - 演示启动和恢复流程的所有可能方式。
4. Itemlist - 演示 REST 风格 URL、到可刷新对话 URL 的对话重定向以及内联流程。
5. Shippingrate - 演示 Spring Web Flow 与 Ajax 技术结合使用(感谢 Steven Devijver)
5. NumberGuess - 演示有状态 Bean
6. Birthdate - 演示 Struts 集成。
7. Fileupload - 演示 multipart 文件上传。
8. Phonebook-Portlet - Portlet 环境下的 phonebook 示例(注意流程定义没有改变)
9. Sellitem-JSF - JSF 环境下的 sellitem 示例(注意流程定义没有改变)

要一步构建示例应用程序以进行部署,只需解压发布存档,访问 projects/build-spring-webflow 目录并执行 ant dist 目标即可。有关发布存档内容和示例的更多信息,请分别参见发布 readme.txt 和 projects/spring-webflow-samples/readme.txt。所有示例项目现在都是 Spring IDE 项目,可以直接导入 Eclipse。请关注即将由 Spring IDE 团队发布的 Spring IDE 图形化 Web Flow 编辑器。

感谢所有让 Spring Web Flow 成为今天这样的用户们,是你们的使用和反馈让它变得更强大。祝大家使用愉快!

此致,

Spring Web Flow 团队

Keith Donald
Erwin Vervaet
Colin Sampaleanu
Juergen Hoeller
Rob Harrop

订阅 Spring 新闻通讯

通过 Spring 新闻通讯保持联系

订阅

先行一步

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

了解更多

获取支持

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

了解更多

近期活动

查看 Spring 社区的所有近期活动。

查看全部