12.2 Setup

JSR-352 要用到一个很简单的 path 来执行批处理作业。下面的代码就是执行一个批处理作业所需要的一切:

  1. JobOperator operator = BatchRuntime.getJobOperator();
  2. jobOperator.start("myJob", new Properties());

虽然对于开发人员来说很方便, 但其中的坑可能埋藏在细节中。Spring Batch 在启动时会加载一些基础类, 开发者可能需要重写其中的某些部分。在首次调用 “BatchRuntime.getJobOperator()” 时会加载下面这些对象:


Bean Name

Default Configuration

Notes

dataSource

配置的 Apache DBCP BasicDataSource 数据库连接池对象.

默认启动了 HSQLDB.

transactionManager

org.springframework.jdbc.datasource.DataSourceTransactionManager

引用了上面的 dataSource bean .

A Datasource initializer


用来执行
batch.drop.scriptbatch.schema.script 属性所配置的脚本. 默认是执行 HSQLDB 对应的表结构脚本. 可以通过
batch.data.source.init 属性禁用此行为.

jobRepository

基于 JDBC 的 SimpleJobRepository.

JobRepository 对象需要用到上面的数据库连接池以及事务管理器. 对应的表的前缀 (默认是 BATCH_) 是通过
batch.table.prefix 属性来配置的.

jobLauncher

org.springframework.batch.core.launch.support.SimpleJobLauncher

用来启动 Jobs.

batchJobOperator

org.springframework.batch.core.launch.support.SimpleJobOperator

JsrJobOperator 封装了此对象的大部分功能.

jobExplorer

org.springframework.batch.core.explore.support.JobExplorerFactoryBean

用于查找定位 JsrJobOperator 提供的功能.

jobParametersConverter

org.springframework.batch.core.jsr.JsrJobParametersConverter

JobParametersConverter 的 JSR-352 专有实现.

jobRegistry

org.springframework.batch.core.configuration.support.MapJobRegistry

SimpleJobOperator.使用

placeholderProperties

org.springframework.beans.factory.config.PropertyPlaceholderConfigure

加载 properties 文件 batch-${ENVIRONMENT:hsql}.properties 来配置上面提到的属性. ENVIRONMENT 是一个系统属性 (默认值为 hsql), 可以指定为 Spring Batch 支持的任意数据库类型.

提示

对基于 JSR-352的 job来说,上面的这些 bean 都是必须具备的。d当然,开发者可以根据需要重载某些类,以提供自定义的功能。