12.2 Setup
JSR-352 要用到一个很简单的 path 来执行批处理作业。下面的代码就是执行一个批处理作业所需要的一切:
JobOperator operator = BatchRuntime.getJobOperator();
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.script 和 batch.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当然,开发者可以根据需要重载某些类,以提供自定义的功能。