The Spring Batch 3.0 release has five major themes:
JSR-352 Support
Upgrade to Support Spring 4 and Java 8
Promote Spring Batch Integration to Spring Batch
JobScope Support
SQLite Support
JSR-352 is the new java specification for batch processing. Heavily inspired by Spring Batch, this specification provides similar functionality to what Spring Batch already supports. However, Spring Batch 3.0 has implemented the specification and now supports the definition of batch jobs in compliance with the standard. An example of a batch job configured using JSR-352's Job Specification Language (JSL) would look like below:
<?xml version="1.0" encoding="UTF-8"?> <job id="myJob3" xmlns="http://xmlns.jcp.org/xml/ns/javaee" version="1.0"> <step id="step1" > <batchlet ref="testBatchlet" /> </step> </job>
See section JSR-352 Support for more details.
Spring Batch Integration has been a sub module of the Spring Batch Admin project now for a few years. It provides functionality to better integrate the capabilities provided in Spring Integration with Spring Batch. Specific functionality includes:
Launching jobs via messages
Asynchronous ItemProcessors
Providing feedback with information messages
Externalizing batch process execution via remote partitioning and remote chunking
See section Spring Batch Integration for details.
With the promotion of Spring Batch Integration to be a module of the Spring Batch project, it has been updated to use Spring Integration 4. Spring Integration 4 moves the core messaging APIs to Spring core. Because of this, Spring Batch 3 will now require Spring 4 or greater.
As part of the dependency updates that have occurred with this major release, Spring Batch now supports being run on Java 8. It will still execute on Java 6 or higher as well.
The Spring scope "step" used in Spring Batch has had a pivotal role in batch applications, providing late binding functionality for a long time now. With the 3.0 release Spring Batch now supports a "job" scope. This new scope allows for the delayed construction of objects until a Job is actually launched as well as providing a facility for new instances for each execution of a job. You can read the details about this new bean scope in the section Section 5.4.2, “Job Scope”.