Spring Batch 3.0 里程碑 3 发布

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

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

里程碑 3 中的功能

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

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

JSR-352 支持

Spring 在对此规范的贡献中投入了大量时间和资源。我们通过 JCP 与其他行业专家的合作,JSR-352 验证了 Spring Batch 在过去六年里在无数生产环境中实施和经过实战检验的批处理模式,是构建企业关键任务批处理应用程序的最佳方法。

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

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

Spring Batch Integration 几年来一直是 Spring Batch Admin 下一个鲜为人知的子项目。然而,考虑到这个库提供的功能的强大及其在企业开发中的有用性,我们决定将其从 Spring Batch Admin 的旗下移至 Spring Batch 的旗下。Spring Batch Integration 旨在提供连接批处理和集成处理的有用组件,为启动和伸缩批处理应用程序提供了多种选项。功能包括

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

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

升级以支持 Spring 4 和 Java 8

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

其他修复和改进

除了上述主要新功能之外,我们还添加了一些较小的功能,并继续修复 bug。我们添加的新功能包括增加了 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 社区的所有近期活动。

查看全部