48

我正在尝试学习Spring Batch,但启动指南非常混乱。评论喜欢

通过检查 org.springframework.batch.sample 包(在 src/main/java 中)中的单元测试和 src/main/resources/jobs 中的配置,您可以很好地了解如何设置作业。

并不完全有帮助。此外,我发现示例项目非常复杂(17 个非空命名空间和 109 个类)!有没有更简单的地方开始使用 Spring Batch?

4

8 回答 8

37

几点建议:

于 2009-10-22T21:41:20.207 回答
8

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

作为新手,您应该深入研究并确定您的要求的重要事项是,

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

然而,值得坚持。批处理编程与其他服务器端样式非常不同,并且极大地受益于通常的 Spring“模式抽象”方法。

于 2009-12-11T15:37:09.833 回答
5

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

  1. http://krams915.blogspot.jp/2012/02/spring-batch-tutorial-part-1.html
  2. http://krams915.blogspot.jp/2012/02/spring-batch-tutorial-part-2.html
  3. http://krams915.blogspot.jp/2012/02/spring-batch-tutorial-part-3.html
  4. http://krams915.blogspot.jp/2012/02/spring-batch-tutorial-part-4.html
于 2012-12-12T06:29:58.817 回答
5

我最近给了 Spring Batch 一个真正的尝试。我会说,在我的实现中,我使用了一个内存存储库(因为在我的项目情况下重新启动和重试不是优先事项),但我可以理解 Richard 关于 JobRepository 所说的话:你基本上必须深入挖掘才能找到数据库架构。

对于 Spring Batch 2.1,他们确实在存储库中提供了一些文档: http: //static.springsource.org/spring-batch/reference/html/metaDataSchema.html,包括有关如何处理特定于数据库的实现的讨论。用于创建表的 DDL 位于核心 Spring Batch 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。

于 2010-05-07T20:35:11.207 回答
5

在你跳上 Spring Batch 马车之前,你可能想读一下 SO 自己的 cletus 对它的缺点所说的话:

http://www.cforcoding.com/2009/07/spring-batch-or-how-not-to-design-api.html

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

于 2009-10-26T18:25:34.237 回答
3

https://github.com/langmi/spring-batch-examples

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

于 2011-08-23T12:27:30.110 回答
1

我刚刚开始将 Spring Batch 视为我们内部批处理框架的可能替代品。实际上,创建具有调度作业能力的批处理服务器和顶部的 JMX 接口以提供正在运行/以前运行的作业实例的概述只花了一天多一点的时间。但是,像 Caoilte 一样,我发现文档存在问题。主要的,一个不在文档或 javadocs 中的,是 JobRepository 所需的表。默认设置是拥有数据库持久性 JobRepository,这是我的新服务器的要求之一,但我找不到所需的表的任何提及。我不得不在谷歌上下搜索任何提及它们(如果它们在文档中,那么我很乐意在我不起眼的馅饼上撒盐)。

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

于 2010-02-24T13:35:34.520 回答
1

可惜你们放弃了它,这个框架实际上真的很棒。但如果其他人需要快速入门,请尝试:Spring Batch 快速入门

/阿纳托利

于 2010-04-08T02:17:47.167 回答