Job Repository来存储Job执行期的元数据,并提供两种默认实现。一种是存放在内存中,默认实现类为MapJobRepositoryFactoryBean;另一种是存入在数据库中。
一、配置 Memory Job Repository
<!--定义作业仓库 Job执行期间的元数据存储在内存中-->
<bean id="jobRepository" class="org.springframework.batch.core.repository.support.MapJobRepositoryFactoryBean">
</bean>
举例:
创建一个简单的Spring Batch项目(一)_人……杰的博客-CSDN博客
二、配置DB Job Repository
data-source:定义数据源,默认dataSource
transaction-manager:定义事务管理器
isolation-level-for-create:定义创建Job Execution时候的事务隔离级别,避免多个Job Execution执行一个Job Instance,默认SERIALIZABLE
table_prefix:定义使用的数据库表的前缀为BATCH_,默认BATCH_
max-varchar-length:定义varchar的最大长度为1000,默认值为2500
<batch:job-repository
id="jobRepository"
data-source="dataSource"
transaction-manager="transactionManager2"
isolation-level-for-create="SERIALIZABLE"
table-prefix="BATCH_"
max-varchar-length="1000"/>
<!--数据库的事务管理器-->
<bean id="transactionManager2" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"/>
</bean>
<!--数据源-->
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName">
<value>com.mysql.jdbc.Driver</value>
</property>
<property name="url">
<value>jdbc:mysql://127.0.0.1:3306/spring_batch_demo2</value>
</property>
<property name="username" value="root"></property>
<property name="password" value="12345"></property>
</bean>
举例:
配置DB Job Repository 项目举例(三)_人……杰的博客-CSDN博客
我们设置为3,也就是说当一条数据操作失败,那我们会对这条数据进行重试3次,还是失败就是 当做失败了, 那么我们如果有
配置
skip(推荐
配置
使用),那么这个数据失败记录就会留到给 skip 来处理。数据处理器,是我们自定义的,里面主要是包含我们对数据处理的业务逻辑,并且我们设置了一些数据校验器,我们这里使用 JSR-303的Validator来作为校验器。首先,在进入实例教程前,我们看看这次的实例里,我们使用
spring
boot 整合
spring
batch
框架,要编码的东西有什么?
1、为方便开发,本程序所用框架为
spring
boot+mybatis,同时mybatis还集成了 generator插件;如果对这些开发环境不熟悉,建议先查询相关资料,搭建
spring
boot+mybatis环境,再集成
spring
batch
。
2、在
配置
job
、step等
spring
batch
的bean时,用的是java config
方式
,如想用xml
方式
配置
,可参考之前...
import org.
spring
framework.
batch
.core.
Job
;
import org.
spring
framework.
batch
.core.
Job
Execution;
import org.
spring
framework.
batch
.core.
Job
Parameters;
import org.
spring
framework.
batch
.core.launch.Jo
在默认
配置
下,当我们在oracle数据库上执行
spring
batch
时会报"ORA-08177: 无法连续访问此事务处理"的错误,在网上查找资料,显示是因为
spring
batch
的
Job
Repository
默认的事务级别为“ISOLATION_SERIALIZABLE”,需要调整为“ISOLATION_READ_COMMITTED”才可以(具体为啥需要调整数据库事务级别还不是很清楚,需要找时间再研究清楚)
那么下一步我们自定义自己的
Job
Repository
,通过查看官方文档([
spring
.io](h.
Job
Repository
存储执行期的元数据,提供两种默认实现,一种是存放在内存中,默认实现类为:Map
Job
Repository
FactoryBean。在xml中的
配置
如下:
<bean id="
job
Repository
"
class="org.
spring
framework.
batch
.core.
repository
.support.Map
Job
Repository
FactoryBe
1、什么是
Spring
Batch
1.1 介绍1.2 架构组件分类(应用层):包含开发者应用
Spring
-
batch
编写的所有批处理作业和自定义代码;
Batch
Core(核心层):包含加载和控制批处理作业所必需的核心类,它包含了
Job
,Step,
Job
Launcher的实现;(基础架构层):基础架构层包含了Reader(ItemReader),Writer(ItemWriter),Services可以被应用层和核心层使用;1.3 优势丰富的开箱即用组件 开箱即用组件包括各种资源的读、写。
此系列博客皆为学习
Spring
Batch
时的一些笔记;
Spring
Batch
Job
在运行时有很多元数据,这些元数据一般会被保存在内存或者数据库中,由于
Spring
Batch
在默认
配置
是使用HSQLDB,也就是说在
Job
的运行过程中,所有的元数据都被储存在内存中,在
Job
结束后会随着进程的结束自动消失;在这里我们推荐
配置
Job
Repository
去使用MySQL。
在这种情况...
Spring
Batch
支持使用分区来读取数据库中的数据并并行处理。在讲
Spring
Batch
使用分区读取数据库之前先介绍下Enable
Batch
Processing。