Updating Spring Batch jobs from 1.0.0.m3 to 1.0.0.m4 framework

This is a description of what needed to be done to migrate the samples from m3 to the m4 release.

Tip:
if you use SpringIDE, make sure it tracks all your configuration files, so that errors are immediately visible.

JOB CONFIGURATION

  • ItemProviderTasklet and RestartableItemProviderTasklet have been replaced with ItemOrientedTasklet
  • ItemProvider/ItemProcessor pair is now ItemReader/ItemWriter
  • InputSource and ItemProvider interfaces have been merged into ItemReader (ItemReaders can be composite when desired)
  • OutputSource and ItemProcessor interfaces have been merged into ItemWriter (ItemTransformerItemWriter and CompositeItemTransformer provide support for item transformations before writing to output)
  • JobConfiguration and Step Configuration are now called simply Job and Step. There is no JobExecutor or StepExecutor.

CONTAINER CONFIGURATION

  • JobIdentifier is replaced by JobParameters
  • JobLauncher#run(Job, JobParameters) now returns JobExecution which has methods stop() and isRunnig() (previously part of JobLauncher)
  • Hibernate repository (JobDao and StepDao) has been removed
  • JobExecutor and StepExecutor are no longer explicitly declared (Job and Step execute themselves)

VARIOUS

  • Remember to update the database schema
  • Several moves and package renames easily fixed by IDE refactoring support ('organize imports' in Eclipse)
  • FieldSet is now an interface with DefaultFieldSet as provided implementation
  • ResourceLifecycle and Restartable interfaces have been removed, ItemStream now covers their responsibilities
  • StatisticsProvider interface has been superceded by ExecutionAttributesProvider
  • BatchTransationSynchronizationManager has been removed. Use the regular TransactionSynchronizationManager if you need to register a synchronization.