在之前的文章我们已经对Spring Batch有了一个初步的了解,跑批利器框架SpringBatch的大体介绍已经结束,接下来我们将深入Spring Batch的一些内部高级配置主题,能够让我们更高效的去利用这个跑批利器.
引用 Spring Batch XML命名空间
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:batch="http://www.springframework.org/schema/batch"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/batch
http://www.springframework.org/schema/batch/spring-batch.xsd
">
<batch:job id="importProductsJob">
(...)
</batch:job>
</beans>
Spring Batch XML 的特点
Spring Batch XML是Spring Batch配置的核心,它主要是用来配置批量的框架,具体的实体配置就需要Spring的特性去配置.Spring Batch XML提供很便利的方式跟标准的Spring XML进行交互.下图描述了两者之间的交互关系.
配置jobs
在我们之前的文章提到过的,Spring Batch的核心就是任务和步骤,它们描述了一个批量的具体执行过程,我们已经通过一个简单的例子来展示这个过程,接下来便是详细的配置信息和结构.
job实体的层次结构我们可以通过下图进行直观的了解,SpringBatch的配置是这里最广泛的配置,其次就是job,Step,Tasklet,Chunk.
我们也可以通过下面这段代码的方式来展现上图的内容.
<batch:job id="importProductsJob">
(...)
<batch:step id="readWriteStep">
<batch:tasklet transaction-manager="transactionManager">
<batch:chunk
reader="productItemReader"
processor="productItemProcessor"
writer="productItemWriter"
commit-interval="100"/>
</batch:tasklet>
</batch:step>
</batch:job>
以上的元素我们就可以用了定义一个具体的Job,包含了读取,处理,写文件等逻辑.当然上面的例子还是一个比较粗的配置.接下来我们将深入Job的具体配置以及它的各种属性特点.这里我们主要跟大家分享的是Job的三个比较常用的属性 restartable,incrementer,job-repository
restartable 属性定义了SpringBatch是否要重启一个job ,如果是false的话Spring Batch只能执行一次,如果你尝试再执行一遍此job变回抛出异常JobRestartException,下面的代码片段是具体的示例
<batch:job id="importProductsJob" restartable="false">
(...)
</batch:job>
incrementer提供一个方面的方式来创建一个job参数的值,需要注意的是JobLauncher是不需要这个的,因为你必须在启动的时候提供所有的参数.
job-repository是指一个实体定义具体哪个任务仓库来运行这个job.