今天我们高兴地宣布 Spring Batch 3.0 发布。Spring Batch 的此版本提供了对 JSR-352 的支持——我们致力于提供此支持,并为我们现有的 Spring Batch 社区提供了许多新功能。
Spring Batch 3.0 中的特性
此版本的主要特性包括
- JSR-352 支持
- 将 Spring Batch Integration 提升到 Spring Batch 中
- 全面检修依赖项
- 支持 SQLite
- 作业作用域
- 移除“archetypes”,转而支持 Spring Boot
- 将构建 Spring Batch 的方式从 Maven 切换到 Gradle
JSR-352 支持
作为 JEE7 中最重要的新特性之一,JSR-352 将批处理的标准化引入 Java 技术栈。Spring 团队不仅有两名成员在专家组中为规范提供了大量输入,而且 Spring Batch 成为大部分编程模型的灵感来源。Spring Batch 3.0 通过提供经过最多生产测试的代码库来实施此规范,继续履行 Spring 对 JSR-352 的承诺。
注意 JSR-352 和 Spring Batch 之间的区别很重要。JSR-352 提供三件事
- 构建批处理组件的 API
- 用于配置批处理组件的基于 XML 的 DSL
- 批处理组件如何交互的契约
JSR-352 不提供批处理组件的任何实现。Spring Batch 提供了 17 个 readers、16 个 writers 以及无数其他实用工具和扩展,这些都在企业生产环境中经过多年测试。Spring Batch 提供了超越单个 JVM 的可伸缩性选项。最后,Spring Batch 通过 Spring for Apache Hadoop 项目和作为 Spring XD 的基石提供了大数据支持。
要了解更多关于 Spring Batch 对 JSR-352 的实现,请访问我们的参考文档:https://docs.springjava.cn/spring-batch/trunk/reference/html/jsr-352.html
将 Spring Batch Integration 提升到 Spring Batch
从外部来看,何时使用 Spring Batch 以及何时使用 Spring Integration 可能会令人困惑。说实话,并不总是有一个明确的非此即彼的答案。在许多情况下,结合使用这两种技术是提供健壮、可伸缩解决方案的最佳选择。这就是开发 Spring Batch Integration 的原因。这个模块是 Spring Batch 扩展的集合,它允许开发人员使用 Spring Integration 来扩展 Spring Batch 的能力。多 JVM 可伸缩性和消息驱动的作业启动等功能,使用此模块无需自定义代码,只需最少的配置即可实现。
Spring Batch Integration 中提供的功能将批处理扩展到 JSR-352 提供的功能之外,以提供健壮的企业级解决方案。您可以在参考文档中阅读更多关于 Spring Batch Integration 及其组件的信息:https://docs.springjava.cn/spring-batch/trunk/reference/html/springBatchIntegration.html。
全面检修依赖项
作为 Spring 整个产品组合持续努力的一部分,Spring Batch 的第三方依赖项已更新。这使得 Spring Batch 用户可以使用与 Spring Batch 集成最可靠的最新库。
支持 SQLite
大多数集成测试场景使用 HSQLDB 作为数据源,因为它能够轻松创建内存数据库。然而,有时一个简单的单文件选项会更好。因此,我们已将 SQLite 添加为 Spring Batch 仓库支持的数据库。
作业作用域
Spring Batch 提供了两个自定义 bean 作用域。第一个是 step 作用域,多年来一直用作延迟 bean 初始化直到 bean 所使用的 step 执行的方式。在 Spring Batch 3.0 中,我们添加了 job 作用域。这将允许延迟初始化作业级别组件(例如 JobExecutionListeners),并为这些组件提供作业参数注入等功能。您可以在此处阅读参考手册中有关作业作用域的更多信息:https://docs.springjava.cn/spring-batch/trunk/reference/html/configureStep.html#job-scope。
移除“archetypes”,转而支持 Spring Boot
传统上,Spring Batch 提供了一个示例 Maven 项目作为引导 Spring Batch 项目的一种方式。有了 Spring Boot,我们已经移除了这些项目,转而使用 Spring Boot 提供的动态引导功能。我们认为 Boot 提供了比旧的“archetypes”提供的方案优越得多的选择。
从 Maven 迁移到 Gradle
最后,此版本是 Spring Batch 第一个将内部构建系统从 Maven 迁移到 Gradle 的版本。此更改对使用 jar 包的开发人员没有任何影响。Maven 用户仍然可以通过 Maven Central 获取它们。
展望未来
随着此版本的发布,我们期待计划和开发我们的 3.1 版本。3.1 版本将有两个主要主题:简化和支持 Spring XD 的工作。
在简化方面,我们希望提高 Spring Batch 的可用性,使其可以被考虑用于不太“繁重”的流程。通过专注于这一点,它允许开发人员“发展”一个解决方案。许多时候,一些开始只是简单的脚本,会演变为企业需要依赖的任务关键型功能。我们希望 Spring Batch 在脚本阶段就被考虑,这样当该功能需要企业级解决方案时,它已经到位了。
除了核心的 Spring Batch 功能外,Spring Batch 还作为 Spring XD 的核心技术。我们将继续通过 Spring XD 和 Spring for Apache Hadoop 扩展 Spring Batch 的能力,以支持大数据解决方案。
结论
3.0.0 版本标志着 Spring Batch 下一个重要里程碑的完成。它将 JSR-352 提供的标准带到我们的社区,并为高级用户提供了详尽的附加功能集合。我们期待您在论坛、社交媒体和 SpringOne2GX 现场提供反馈!