对于最新稳定版本,请使用Spring Batch Documentation 6.0.0spring-doc.cadn.net.cn

Java 配置

Spring 3带来了用Java而非XML配置应用的功能。截至 Spring Batch 2.2.0 版本,你可以用同样的 Java 配置配置批处理作业。 基于Java的配置包含三个组件:@EnableBatchProcessing注释和两个构建器。spring-doc.cadn.net.cn

@EnableBatchProcessing注释的工作原理类似于其他注释@Enable*注释 Spring的家庭。在这种情况下,@EnableBatchProcessing提供了 的基础配置 批量作业的构建。在该基配置中,有一个StepScope工作范围是 此外,还推出了若干豆子可供自动接线:spring-doc.cadn.net.cn

默认实现提供上述列表中提到的豆子,并要求数据来源以及一个PlatformTransactionManager在语境中以豆子形式提供。数据源与交易 管理器被JobRepositoryJobExplorer实例。默认情况下,数据源名为数据来源以及名为transactionManager将被使用。你可以通过以下方式自定义这些豆子 属性@EnableBatchProcessing注解。以下示例展示了如何提供 自定义数据源和事务管理器:spring-doc.cadn.net.cn

@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可以作为基类配置批处理作业。 以下摘录是典型的使用示例:spring-doc.cadn.net.cn

@Configuration
class MyJobConfiguration extends DefaultBatchConfiguration {

	@Bean
	public Job job(JobRepository jobRepository) {
		return new JobBuilder("job", jobRepository)
				// define job flow as needed
				.build();
	}

}

数据源和事务管理器将从应用上下文中解析 并设置了作业仓库和作业浏览器。你可以自定义配置 通过覆盖所需的设置器,对任何基础设施的 bean 进行。以下示例 例如展示了如何自定义字符编码:spring-doc.cadn.net.cn

@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,但并非双向 同时。