批处理基础设施配置
如前所述,Spring Batch 依赖许多基础设施 Bean 来运行作业和步骤,
包括 JobOperator 和 JobRepository。虽然可以手动定义这些 Bean,但使用
@EnableBatchProcessing 注解或 DefaultBatchConfiguration 类来提供基础配置要容易得多。
默认情况下,Spring Batch 将提供基于 ResourcelessJobRepository 实现的无资源批处理基础设施配置。如果您想使用基于数据库的作业存储库,可以使用 @EnableJdbcJobRepository / @EnableMongoJobRepository 注解,或使用等效的类 JdbcDefaultBatchConfiguration / MongoDefaultBatchConfiguration,如配置 JobRepository 部分所述。
基于注解的配置
@EnableBatchProcessing 注解的工作方式与 Spring 家族中的其他 @Enable* 注解类似。在这种情况下,@EnableBatchProcessing 提供了用于构建批处理作业的基础配置。在此基础配置中,除了创建大量可供自动装配的 Bean 之外,还会创建 StepScope 和 JobScope 的实例:
-
JobRepository: 一个名为jobRepository的 Bean -
JobOperator: 一个名为jobOperator的 Bean
以下是如何在 Java 配置类中使用 @EnableBatchProcessing 注解的示例:
@Configuration
@EnableBatchProcessing
public class MyJobConfiguration {
@Bean
public Job job(JobRepository jobRepository) {
return new JobBuilder("myJob", jobRepository)
//define job flow as needed
.build();
}
}
可以通过使用 @EnableBatchProcessing 注解的属性来定制任何基础设施 bean 的配置。
只需一个配置类拥有 @EnableBatchProcessing 注解。一旦你有一个类被该注解标记,你就拥有了前面描述的所有配置。 |
程序化配置
与基于注解的配置类似,通过 DefaultBatchConfiguration 类提供了一种以编程方式配置基础设施 Bean 的方法。该类提供了与 @EnableBatchProcessing 相同的 Bean,并可用作配置批处理作业的基类。以下代码片段展示了如何使用它的典型示例:
@Configuration
class MyJobConfiguration extends DefaultBatchConfiguration {
@Bean
public Job job(JobRepository jobRepository) {
return new JobBuilder("myJob", jobRepository)
// define job flow as needed
.build();
}
}
您可以通过重写所需的 setter 来自定义任何基础设施 bean 的配置。
@EnableBatchProcessing 不应与 DefaultBatchConfiguration 一起使用。您应该要么通过 @EnableBatchProcessing 以声明式方式配置 Spring Batch,要么以编程方式扩展 DefaultBatchConfiguration,但不可同时使用这两种方式。 |