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_amountdevendra, 1234, 31/10/2015, 10000john, 2134, 3/12/2015, 12321robin, 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