今天,我们很高兴地宣布 Spring Batch 3.0 版本的发布。此版本的 Spring Batch 提供了对 JSR-352 的支持——我们致力于提供该支持,以及为我们现有的 Spring Batch 社区提供许多新功能。
Spring Batch 3.0 中的功能
此版本的主要功能包括
- JSR-352 支持
- 将 Spring Batch Integration 提升到 Spring Batch 中
- 完全修改了依赖项
- 支持 SQLite
- 作业范围
- 删除“原型”以支持 Spring Boot
- 从 Maven 切换到 Gradle 用于构建 Spring Batch
JSR-352 支持
JSR-352 为 JEE7 中最重要的新功能之一,它将批处理的标准化引入 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 个读取器、16 个写入器以及无数其他经过多年企业生产环境测试的实用程序和扩展。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 的用户使用他们信任的库的最新版本。
支持 SQLite
大多数集成测试场景都使用 HSQLDB 作为数据源,因为它能够轻松创建内存数据库。但是,有时一个简单、单个文件的选择会更好。因此,我们添加了 SQLite 作为 Spring Batch 存储库支持的数据库。
作业范围
Spring Batch 提供了两个自定义 Bean 作用域。第一个是 step 作用域,多年来一直作为一种方法,用于延迟 Bean 初始化,直到执行使用该 Bean 的步骤。在 Spring Batch 3.0 中,我们添加了 job 作用域。这将允许延迟初始化作业级组件(例如 JobExecutionListeners),并为这些组件提供诸如作业参数注入之类的功能。您可以在此处参考手册中阅读有关作业作用域的更多信息:https://docs.springjava.cn/spring-batch/trunk/reference/html/configureStep.html#job-scope。
删除“原型”以支持 Spring Boot
Spring Batch 传统上提供了一个示例 Maven 项目,作为引导 Spring Batch 项目的一种方式。使用 Spring Boot,我们删除了这些项目,转而使用 Spring Boot 提供的动态引导功能。我们认为 Boot 提供的选择远远优于旧的“原型”。
从 Maven 迁移到 Gradle
最后,此版本是 Spring Batch 首次从 Maven 迁移到 Gradle 作为内部构建系统的版本。此更改对使用 jar 的开发人员没有任何影响。它们仍然可以通过 Maven Central 供 Maven 用户使用。
展望未来
通过此版本,我们期待规划和开发 3.1 版本。3.1 版本将有两个主要主题:简化和支持 Spring XD 工作。
在简化方面,我们希望提高 Spring Batch 的可用性,使其可以被用于不太“繁重”的流程。通过专注于此,它允许开发人员“扩展”解决方案。很多时候,最初是简单的脚本,然后演变成企业需要依赖于完成关键功能的流程。我们希望 Spring Batch 在脚本阶段也成为一种选择,这样当该功能需要企业级解决方案时,它就已经存在了。
除了核心 Spring Batch 功能之外,Spring Batch 还是 Spring XD 的核心技术。我们将继续扩展 Spring Batch 的功能,以通过 Spring XD 和 Spring for Apache Hadoop 支持大数据解决方案。
结论
3.0.0 代表了 Spring Batch 下一个主要里程碑的完成。它将 JSR-352 提供的标准带给我们的社区,并为高级用户提供了大量其他功能。我们期待您在论坛、社交媒体以及SpringOne2GX上提供反馈!