Introduction to Spring Batch.
1. Introduction
In this article we're going to focus on a practical, code-focused intro to Spring Batch. Spring Batch is a processing framework designed for robust execution of jobs.
It's current version 3.0, which supports Spring 4 and Java 8. It also accommodates JSR-352, which is new java specification for batch processing. current version 3.0, which supports Spring 4 and Java 8. It also accommodates JSR-352, which is new java specification for batch processing.
2. Workflow Basics
Spring batch follows the traditional batch architecture where a job repository does the work of scheduling and interacting with the job.
A job can have more than one steps – and every step typically follows the sequence of reading data, processing it and writing it.
And of course the framework will do most of the heavy lifting for us here – especially when it comes to the low level persistence work of dealing with the jobs – using sqlite for the job repository.
2.1. Our Example Usecase
The simple usecase we're going to tackle here is – we're going to migrate some financial transaction data from CSV to XML.
The input file has a very simple structure – it contains a transaction per line, made up of: a username, the user id, the date of the transaction and the amount:
1 2 3 4 | username, userid, transaction_date, transaction_amount devendra, 1234, 31/10/2015, 10000 john, 2134, 3/12/2015, 12321 robin, 2134, 2/02/2015, 23411 |
3. The Maven POM
Dependencies required for this project are spring core, spring batch, and sqlite jdbc connector:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 < modelVersion >4.0.0</ modelVersion > < groupId >org.baeldung</ groupId > < artifactId >spring-batch-intro</ artifactId > < version >0.1-SNAPSHOT</ version > < packaging >jar</ packaging > < name >spring-batch-intro</ name > < properties > < project.build.sourceEncoding >UTF-8</ project.build.sourceEncoding > < spring.version >4.2.0.RELEASE</ spring.version > < spring.batch.version >3.0.5.RELEASE</ spring.batch.version > < sqlite.version >3.8.11.2</ sqlite.version > </ properties > < dependencies > <!-- SQLite database driver --> < dependency > < groupId >org.xerial</ groupId > < artifactId >sqlite-jdbc</ artifactId > < version >${sqlite.version}</ version > </ dependency > < dependency > < groupId >org.springframework</ groupId > < artifactId >spring-oxm</ artifactId > < version >${spring.version}</ version > </ dependency > < dependency > < groupId >org.springframework</ groupId > < artifactId >spring-jdbc</ artifactId > < version >${spring.version}</ version > </ dependency > < dependency > < groupId >org.springframework.batch</ groupId > < artifactId >spring-batch-core</ artifactId > < version >${spring.batch.version}</ version > </ dependency > </ depend <dependencies > </ project>
|
Comments
Post a Comment