Spring Batch 3.0 里程碑版本 3 发布

发布 | Michael Minella | 2014年2月24日 | ...

今天,我们很高兴地宣布 Spring Batch 3.0 的最终里程碑版本发布(下载)。此版本展示了我们对 JSR-352 的支持,目前支持其所有必需的功能。我们还为现有 Spring Batch 用户添加了许多新功能。Spring Batch 是一个轻量级、全面的框架,用于开发健壮的批处理应用程序。

里程碑版本 3 的功能

作为 Spring Batch 3.0.0 版本的最终里程碑版本,此版本的全部主要功能已完成。此版本的主要功能包括:

  • JSR-352 支持
  • 将 Spring Batch 集成提升到 Spring Batch
  • 升级以支持 Spring 4 和 Java 8
  • 其他修复和改进

JSR-352 支持

Spring 已投入大量时间和资源来为该规范做出贡献。我们通过 JCP 与其他行业专家(JSR-352)的合作证明,Spring Batch 在过去六年中在无数生产环境中实施和测试的批处理模式是构建企业级关键任务批处理应用程序的最佳方法。

3.0.0.M3 是第一个符合 JSR-352 的 Spring Batch 版本,因为它通过了所有 152 个 SE TCK 测试。Spring Batch 对 JSR-352 的实现允许用户使用熟悉的 Spring Batch 组件,同时仍然保持与 Java 标准的兼容性。Spring Batch 支持通过基于 JSR-352 的 XML 配置作业,使用 JSR 中定义的注入方法注入针对 javax.batch.* 接口开发的批处理构件(Spring 的依赖注入、batch.xml 和内联配置),以及 JSR-352 中提供的所有可扩展性选项(通过线程进行拆分和分区)。

我们对实现的目标很简单:遵循 JSR 的规则,而不会违反 Spring Batch 已定义的规则。换句话说,在不影响现有 Spring Batch 用户的情况下实现规范。我们通过提供两种实现批处理作业的“路径”来做到这一点。第一种是传统的 Spring Batch 方法。使用 Spring Batch XML 或 Spring 的 Java 配置,针对 Spring Batch 接口进行开发,等等。这不会在 3.0 版本中更改。第二种“路径”是 JSR 路径。这种开发方法使用 JSR-352 定义的 XML 模式来配置作业,使用 JSR 的 `JobOperator` 来启动作业和管理元数据,开发人员针对 JSR 的 API 编写代码。需要注意的是,这是两条截然不同的路径。虽然使用 Spring Batch 组件可以与基于 JSR-352 的作业一起使用,但它们在这些上下文中的使用将由 JSR 的规则决定。一个例子是在 JSR-352 中定义的上下文(`StepContext` 和 `JobContext`)的注入。如果使用传统的 Spring Batch 方法配置作业并通过常规 Spring Batch 组件启动作业,则批处理构件将无法使用这些上下文。但是,如果通过 JSR-352 XML 配置作业并通过 JSR-352 `JobOperator` 启动作业,则会在适当的地方注入这些上下文。

重要的是要指出,Spring Batch 不仅仅是实现 JSR-352。它在许多方面都远远超出了规范。

  • 组件 - Spring Batch 提供了 17 个不同的 `ItemReader` 实现、16 个 `ItemWriter` 实现以及许多其他在生产环境中经过多年测试的组件。
  • 可扩展性 - JSR-352 仅为单个 JVM 提供可扩展性选项(通过线程进行分区和拆分)。Spring Batch 提供多 JVM 可扩展性选项,包括远程分区和远程分块。
  • Spring 依赖注入 - 虽然 JSR-352 提供了一种“轻量级依赖注入”形式,但它对批处理构件的构建施加了一些限制(例如,必须使用无参数构造函数)。Spring Batch 基于 Spring,并受益于 Spring Framework 功能的强大功能。
  • 基于 Java 的配置 - 虽然 Spring 的基于 XML 的配置选项众所周知,但 Spring,特别是 Spring Batch,提供了使用基于 Java 的配置的类型安全来配置作业的选项。
  • Hadoop/大数据集成 - Spring Batch 是在 Spring 生态系统中与 Hadoop 和其他大数据存储交互的基础工具。Spring for Apache Hadoop 提供了许多批处理相关的扩展,用于使用 Spring Batch 来协调 Hadoop 集群上的工作。Spring XD 在 Spring Batch 的基础上构建,它不仅提供了执行能力,还为任何环境提供了类似于 Spring Batch Admin 的管理功能。

Spring 将继续参与 JSR-352 的演变,因为它将经历维护修订,并期待对 JCP 过程的进一步贡献。

将 Spring Batch 集成提升到 Spring Batch

Spring Batch 集成是 Spring Batch Admin 的一个鲜为人知的子项目,已经存在几年了。但是,鉴于该库提供的功能多么强大以及它在企业开发中的实用性,我们决定将其从 Spring Batch Admin 的保护伞下移到 Spring Batch 的保护伞下。Spring Batch 集成旨在提供连接批处理和集成处理的有用组件,它为启动和扩展批处理应用程序提供了许多选项。功能包括:

  • 异步 ItemProcessor/ItemWriter - 在另一个线程上执行 `ItemProcessor` 逻辑,向 `ItemWriter` 返回一个 `Future`。`Future` 返回后,将写入结果。
  • `JobLaunchingMessageHandler`/`JobLaunchingMessageGateway` - 提供通过通道接收到的 Spring 消息启动作业的能力。
  • 远程分块 - 提供通过主/从配置远程(跨多个 JVM)执行 `ItemProcessor` 逻辑的能力。
  • 远程分区 - 提供通过主/从配置远程执行完整块(跨多个 JVM 读取/处理/写入)的能力。

这些组件使 Spring Batch 应用程序能够在许多企业中无缝集成和扩展。

升级以支持 Spring 4 和 Java 8

作为我们努力保持依赖项更新的一部分,我们已经更新了 Spring Batch 及其各种模块以支持 Spring 4。由于这些更新,Spring 4 将成为 Spring Batch 3.0.0.M3 的最低支持版本。这不仅带来了 Spring 4 中众多新功能,还提供了立即在 Java 8 上运行的能力。

其他修复和改进

除了上述大型新功能外,我们还添加了一些较小的功能并继续修复错误。我们添加的新功能包括添加 `JobScope` 和对 SQLite 的支持。

发布候选版本的路线图

还剩下什么?随着我们接近发布候选版本,仍然有一些小的工作要做。我们仍在仔细研究 Spring Batch 的依赖项,并努力尽可能多地升级。

结论

3.0.0.M3 标志着 Spring Batch 的一个关键里程碑。它允许开发人员测试基于 JSR-352 的功能,同时仍然拥有 Spring 和 Spring Batch 的基础。它还为框架带来了新功能。我们期待您在论坛、社交媒体和亲自发表您的评论和反馈!

获取 Spring 新闻通讯

与 Spring 新闻通讯保持联系

订阅

领先一步

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

了解更多

获得支持

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

了解更多

即将举行的活动

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

查看全部