Spring batch 如何开始使用Spring Batch?

Spring batch 如何开始使用Spring Batch?,spring-batch,Spring Batch,我正在努力学习,但这个过程很混乱。评论如 你可以对它有一个很好的了解 如何通过检查 中的单元测试 org.springframework.batch.sample 包(在src/main/java中)和 配置在 src/main/resources/jobs 这并不是很有帮助。 我还发现示例项目非常复杂(17个非空名称空间,包含109个类)!是否有一个更简单的地方开始使用Spring Batch 几点提示: (通过archive.org) (通过archive.org) 在您开始使用S

我正在努力学习,但这个过程很混乱。评论如

你可以对它有一个很好的了解 如何通过检查 中的单元测试 org.springframework.batch.sample 包(在src/main/java中)和 配置在 src/main/resources/jobs

这并不是很有帮助。 我还发现示例项目非常复杂(17个非空名称空间,包含109个类)!是否有一个更简单的地方开始使用Spring Batch

几点提示:

  • (通过archive.org)
  • (通过archive.org)

在您开始使用Spring批量生产车之前,您可能想了解SO自己的cletus对其缺点的看法:


我最近评估了springbatch,当我意识到它除了膨胀和开销之外没有给我的项目增加任何东西时,我很快就拒绝了它。springbatch最终可能会成为一个不错的产品(很像ejb这次做对了),但目前它看起来像是一个寻找问题的解决方案

我同意用户指南非常混乱(无论如何,与Spring Core用户指南相比)。它不能充分解决在任何中等复杂的批处理场景中会遇到的一些非常重要的问题

作为新手,您应该深入了解的重要事项,并确定您的需求:

  • 异常配置(何时跳过、何时失败、何时重试)
  • 使用执行上下文来维护状态(例如何时使用步骤执行上下文与作业执行上下文)
  • 状态的一般维护(使用步骤范围,尤其是输入参数)

然而,这是值得坚持的。批处理编程与其他服务器端风格非常不同,并且从通常的Spring“模式抽象”方法中获益匪浅。

我刚刚开始考虑将Spring批处理作为我们内部批处理框架的可能替代品。实际上,创建一个具有调度作业能力的批处理服务器,并在其顶部创建一个JMX接口,以提供运行/以前运行的作业实例的概览,只需要一天多一点的时间。 然而,像Caoilte一样,我发现文档存在问题。主要的是JobRepository需要哪些表,文档或javadocs中没有。默认设置是有一个数据库持久化JobRepository,这是我的新服务器的要求之一,但我找不到任何关于所需表的说明。我不得不在谷歌上下搜索任何关于它们的信息(如果它们出现在文档中,那么我会很高兴地在我卑微的馅饼上撒盐)


我认为实际上创建一个批在SpringBatch中运行是一项相当复杂的任务,因为您可以使用大量的配置选项。这是我眼中的力量。它提供了用xml配置复杂批处理任务的机会,这是我在任何其他批处理框架(据我所知)中都没有发现的。但是如果你真的不想利用Spring Batch的强大功能,为什么不只用一个tasklet步骤创建一个job(但是你必须问问自己,这样做是否值得)。

可惜你们放弃了它,这个框架真的很棒。但如果其他人需要快速启动,请尝试:


/安纳托利

我最近对Spring Batch进行了一次真正的尝试。我要说的是,在我的实现中,我使用了内存存储库(因为在我的项目环境中,重启和重试不是优先事项),但我可以理解Richard对JobRepository的看法:基本上,您必须深入挖掘才能找到数据库模式

对于SpringBatch2.1,他们确实提供了一些关于存储库的文档,包括关于如何处理特定于数据库的实现的讨论。用于创建表的DDL位于核心Spring批处理JAR文件中:

spring-batch-core-2.1.0.RELEASE.jar:/org/springframework/batch/core/*.sql

DB2、Derby、H2、HSQLDB、MySQL、Oracle 10g、PostgreSQL、MS SQL和Sybase都有脚本。


这包含了一些非常好的基本示例

在本教程中,我们将创建一个简单的Spring批处理应用程序,演示如何处理一系列作业,其中主要目的是导入逗号分隔和固定长度记录的列表。此外,我们将使用SpringMVC添加一个web界面,以教您如何手动触发作业,从而可以直观地检查导入的记录。在数据层,我们将使用JPA、Hibernate和MySQL


  • 我已经读过了。它看起来确实对我正在尝试做的事情很有用(出于架构的原因,我不得不使用Spring)。但是,我担心复杂性(非常复杂的配置文件)。简言之,我仍在自己评估它,这就是为什么我问这个问题。@C.Ross-完全有可能将Spring与Quartz结合使用(用于调度),并完全避免Spring批处理。您可以使用策略模式来概括作业和步骤,并且可以通过在数据上存储事务状态来轻松地实现自己的持久化。这就是我们最终要做的,一切都很顺利。我只是看不到SpringBatch提供任何有价值的东西来弥补它的头痛。批处理系统可以不仅仅是步骤和作业。如果这就是您所需要的,那么很好,但是如果您需要其他功能,如重复和重试功能、并行处理等,那么Spring Batch可能是一个很好的解决方案。我放弃了该框架,因为文档有限,而且老实说,它远远超出了我们的需要。祝你好运。在他们准备发布2.0时再看一遍。关于Spring Batch的另一个观察:我可以理解人们对API的看法:乍一看,它确实显得很严厉。但它提供了足够的好处