|
对于最新稳定版本,请使用Spring Batch Documentation 6.0.0! |
Java 配置
Spring 3带来了用Java而非XML配置应用的功能。截至
Spring Batch 2.2.0 版本,你可以用同样的 Java 配置配置批处理作业。
基于Java的配置包含三个组件:@EnableBatchProcessing注释和两个构建器。
这@EnableBatchProcessing注释的工作原理类似于其他注释@Enable*注释
Spring的家庭。在这种情况下,@EnableBatchProcessing提供了 的基础配置
批量作业的构建。在该基配置中,有一个StepScope和工作范围是
此外,还推出了若干豆子可供自动接线:
-
JobRepository:一颗名为jobRepository -
JobLauncher:一颗名为jobLauncher -
职位注册:一颗名为jobRegistry -
JobExplorer:一颗名为jobExplorer -
作业操作员:一颗名为jobOperator
默认实现提供上述列表中提到的豆子,并要求数据来源以及一个PlatformTransactionManager在语境中以豆子形式提供。数据源与交易
管理器被JobRepository和JobExplorer实例。默认情况下,数据源名为数据来源以及名为transactionManager将被使用。你可以通过以下方式自定义这些豆子
属性@EnableBatchProcessing注解。以下示例展示了如何提供
自定义数据源和事务管理器:
@Configuration
@EnableBatchProcessing(dataSourceRef = "batchDataSource", transactionManagerRef = "batchTransactionManager")
public class MyJobConfiguration {
@Bean
public DataSource batchDataSource() {
return new EmbeddedDatabaseBuilder().setType(EmbeddedDatabaseType.HSQL)
.addScript("/org/springframework/batch/core/schema-hsqldb.sql")
.generateUniqueName(true).build();
}
@Bean
public JdbcTransactionManager batchTransactionManager(DataSource dataSource) {
return new JdbcTransactionManager(dataSource);
}
@Bean
public Job job(JobRepository jobRepository) {
return new JobBuilder("myJob", jobRepository)
//define job flow as needed
.build();
}
}
只需一个配置类@EnableBatchProcessing注解。一次
你有一个用它注释的类,你拥有之前描述的所有配置。 |
从 v5.0 开始,这是一种替代的程序化方式来配置基础基础设施豆
通过DefaultBatchConfiguration类。本类提供相同的Beans
提供@EnableBatchProcessing可以作为基类配置批处理作业。
以下摘录是典型的使用示例:
@Configuration
class MyJobConfiguration extends DefaultBatchConfiguration {
@Bean
public Job job(JobRepository jobRepository) {
return new JobBuilder("job", jobRepository)
// define job flow as needed
.build();
}
}
数据源和事务管理器将从应用上下文中解析 并设置了作业仓库和作业浏览器。你可以自定义配置 通过覆盖所需的设置器,对任何基础设施的 bean 进行。以下示例 例如展示了如何自定义字符编码:
@Configuration
class MyJobConfiguration extends DefaultBatchConfiguration {
@Bean
public Job job(JobRepository jobRepository) {
return new JobBuilder("job", jobRepository)
// define job flow as needed
.build();
}
@Override
protected Charset getCharset() {
return StandardCharsets.ISO_8859_1;
}
}
@EnableBatchProcessing不应与DefaultBatchConfiguration.你应该去
要么使用声明式方式配置 Spring Batch@EnableBatchProcessing,
或者使用程序化扩展方式DefaultBatchConfiguration,但并非双向
同时。 |