我如何开始使用Spring Batch?

我试图学习Spring Batch ,但是启动指南很混乱。 像

通过检查org.springframework.batch.sample包(src / main / java)中的unit testing以及src / main / resources / jobs中的configuration,您可以得到关于如何设置作业的相当好的想法。

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

几点提示:

  • Spring批处理HelloWorld
  • 春季批次“Hello World”1
  • 春季批次“Hello World”2
  • 首先看Spring Batch (通过archive.org)
  • 首先看Spring Batch,第二部分 (通过archive.org)

我同意用户指南是非常混乱的(与Spring Core用户指南相比)。 它没有充分地解决一些非常重要的问题,你会遇到任何适度复杂的批处理scheme。

重要的事情,你应该深入到一个新的首发,并决定你的要求是,

  • configurationexception(何时跳过,何时失败,何时重试)
  • 使用执行上下文维护状态(例如,何时使用步骤执行上下文与作业执行上下文)。
  • 一般维护状态(使用步长范围,特别是input参数)

不过值得坚持下去。 批处理编程与其他服务器端样式非常不同,并且从通常的Spring“模式抽象”方法中受益匪浅。

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

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

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

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

在你跳上“春季批发车”之前,你可能想要读一读SO自己的看法:

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

我最近评估了Spring Batch,当我意识到除了膨胀和开销之外,没有给我的项目添加任何东西,我很快就拒绝了。 Spring Batch可能最终会成为一个OK的产品(就像EJB这次一样),但是现在看起来像是一个解决问题的方法。

在本教程中,我们将创build一个简单的Spring Batch应用程序来演示如何处理一系列作业,其中主要目的是导入逗号分隔和固定长度logging的列表。 另外,我们将使用Spring MVC添加一个Web界面来教导如何手动触发作业,以便我们可以直观地检查导入的logging。 在数据层中,我们将使用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

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

这包含了一些相当不错的基本例子。

我刚开始将Spring Batch看作是我们内部批处理框架的可能替代品。 实际上创build一个能够安排作业和JMX接口的批处理服务器,以提供运行/以前运行的作业实例的概述,这需要一天多的时间。 但是,就像Caoilte一样,我发现文档有问题。 主要的,不在文档或javadoc中的是JobRepository需要的表。 默认是有一个数据库持久性JobRepository,这是我的新服务器的要求之一,但我找不到任何提及所需的表。 我不得不在谷歌里search一下它们(如果它们在文档中,那么我会很乐意把盐放在我的小馅饼上)。

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

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

/阿纳托利