JobExecution . This is a runtime context for a version of the job . Ideally, for every JobInstance there'd be
only one JobExecution : the JobExecution that was created the first time the JobInstance ran. However, if
there were any errors, the JobInstance should be restarted; the subsequent run would create another
JobExecution . For every step in the original job , there is a StepExecution in the JobExecution .
Thus, you can see that Spring Batch has a mirrored object graph, one reflecting the design/build
time view of a job , and another reflecting the runtime view of a job . This split between the prototype and
the instance is very similar to the way many workflow engines work, including jBPM.
For example, suppose that a daily report is generated at 2 AM. The parameter to the job would be
the date (most likely the previous day's date). The job , in this case, would model a loading step , a
summary step , and an output step . Each day the job is run, a new JobInstance and JobExecution would
be created. If there are any retries of the same JobInstance , conceivably many JobExecution s would be
9-1. Getting Started with the Spring Batch Distribution
You want to get started with Spring Batch, but the JARs aren't in the standard Spring framework
You can use Maven or Ivy, or you can download them manually as a separate project. If you choose the
Maven/Ivy route or want to use OSGi, there are some things to consider.
How It Works
The simplest thing to do is to simply download the JARS from http://static.springsource.org/spr ing-
batch/ , as usual, and add the JARs provided to your classpath. If you decide you want to use OSGi, you
can use the SpringSource enterprise repository, which provides OSGi JARs. Be careful if you decide to
use those JARs with Maven, however, because they import all other SpringSource enterprise JARs for the
core Spring framework and other OSGi-friendly, third-party libraries. If you already have Spring and all
other packages imported, relying on the SpringSource enterprise JARs will yield two of every JAR in the
Spring framework! Yikes!
Instead, for Maven/Ivy, use the public ones available on the main Maven repositories. I included a
sample POM in the source code for this topic. I extract the salient dependency here. As of this writing,
Spring Batch 2.0 had just been released.
Although all the Spring projects are pretty exhaustively documented, the Spring Batch project has a
notably large sampling of demonstration projects. For this reason alone it might be worth downloading