1,Spring Batch 介绍
- Spring Batch 是一个开源的、全面的、轻量级的批处理框架,通过 Spring Batch 可以实现强大的批处理应用程序的开发。
- Spring Batch 还提供记录/跟踪、事务管理、作业处理统计、作业重启以及资源管理等功能。
- Spring Batch 结合定时任务可以发挥更大的作用。
- Spring Batch 提供了 ItemReader、ItemProcessor 和 ItemWriter 来完成数据的读取、处理以及写出操作,并且可以将批处理的执行状态持久化到数据库中。
2,样例说明
(1)本文通过一个简单的数据复制样例演示在 Spring Boot 中如何使用 Spring Batch。假设现在有一个 data.csv 文件,文件中保存了 4 条用户数据,我们需要通过批处理框架读取文件中的内容然后将之插入数据表中。
注意:为方便演示,本次样例只实现了 ItemReader(数据的读取)和 Itemwriter(数据的写出),中间的 ItemProcessor(数据的处理)不实现,即数据读取后不做任何处理,直接入库。
(2)data.csv 文件存放在 classpath 下(项目的 resources 文件夹里),里面内容如下(每行各个字段间使用空格隔开):
id username sex
1 张三 男
2 李四 男
3 王五 男
4 赵六 女
(3)要存入的数据表(user)的表结构如下:
3,项目配置
(1)首先编辑项目的 pom.xml 文件,添加 spring-boot-starter-batch 依赖以及数据库相关依赖。
注意:添加数据库相关依赖是为了将批处理的执行状态持久化到数据库中(可以理解为执行时自动生成的一些日志记录)。
<!-- Spring Batch -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-batch</artifactId>
</dependency>
<!-- spring-jdbc -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<!-- 数据库驱动依赖 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!-- 数据库连接池 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.9</version>
</dependency>
(2)接着在 application.properties 中进行数据库基本信息配置:
# 前面4行是数据库基本配置
spring.datasource.type=c