如何开始使用Spring Batch?

时间:2009-10-22 20:36:07

标签: spring-batch

我正在尝试学习Spring Batch,但startup guide非常令人困惑。像

这样的评论
  

你可以很好地了解   如何通过检查来建立工作   单元测试   org.springframework.batch.sample   包(在src / main / java中)和   配置   的src /主/资源/作业。

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

8 个答案:

答案 0 :(得分:36)

答案 1 :(得分:7)

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

您应该深入了解作为新入门者的重要事项,并确定您的要求是,

  • 异常配置(何时跳过,何时失败,何时重试)
  • 使用执行上下文来维护状态(例如,何时使用步骤执行上下文与作业执行上下文)。
  • 状态的一般维护(使用步骤范围,尤其是输入参数)
然而,值得坚持不懈。批处理编程与其他服务器端样式非常不同,并且通常采用Spring“模式抽象”方法。

答案 2 :(得分:5)

在你跳上Spring Batch旅行车之前,你可能想看看SO自己的关于它的缺点的说法:

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

我最近对Spring Batch进行了评估,一旦我意识到除了臃肿和开销之外它没有为我的项目增加任何内容,我很快就拒绝了它。 Spring Batch最终可能会成为一个好的产品(就像这次EJB一样正确),但目前它看起来像是一个寻找问题的解决方案。

答案 3 :(得分:5)

我最近给了Spring Batch一个真正的尝试。我会说在我的实现中,我使用了内存存储库(因为重启和重试不是我项目环境中的优先级),但我可以理解Richard对JobRepository的看法:你基本上需要深入挖掘数据库架构。

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

弹簧分批芯2.1.0.RELEASE.jar:/组织/ springframework的/批次/核心/ * SQL

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

答案 4 :(得分: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

答案 5 :(得分:3)

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

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

答案 6 :(得分:1)

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

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

答案 7 :(得分:1)

太糟糕了,你们放弃它,框架实际上真的很棒。但如果其他人需要快速启动,请尝试:Spring Batch Quick Start

/阿纳托