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当然,开发者可以根据需要重载某些类,以提供自定义的功能。