在之前的文章我们已经对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进行交互.下图描述了两者之间的交互关系.

         

springbatch配置job spring batch job_springbatch配置job


   

    配置jobs

    在我们之前的文章提到过的,Spring Batch的核心就是任务和步骤,它们描述了一个批量的具体执行过程,我们已经通过一个简单的例子来展示这个过程,接下来便是详细的配置信息和结构.

    job实体的层次结构我们可以通过下图进行直观的了解,SpringBatch的配置是这里最广泛的配置,其次就是job,Step,Tasklet,Chunk.

    

     我们也可以通过下面这段代码的方式来展现上图的内容.    

springbatch配置job spring batch job_xml_02


   

<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.