配置 Step
Step
正如领域章节所讨论的,Step 是一个领域对象,它封装了批处理作业中一个独立的、顺序的阶段,并包含了定义和控制实际批处理所需的所有信息。这必然是一个模糊的描述,因为任何给定 Step 的内容取决于编写 Job 的开发者的判断。Step 可以像开发者希望的那样简单或复杂。一个简单的 Step 可能只是将数据从文件加载到数据库中,几乎不需要或完全不需要代码(取决于所使用的实现)。而一个更复杂的 Step 可能包含作为处理一部分应用的复杂业务规则,如下图所示:

图 1. 步骤
章节总结
🗃️ 分块导向处理
9 个项目
📄️ TaskletStep
面向分块的处理并不是步骤中唯一的处理方式。如果一个步骤必须包含存储过程调用,该如何处理呢?你可以将调用实现为 ItemReader,并在过程结束后返回 null。然而,这样做有点不自然,因为需要一个无操作的 ItemWriter。Spring Batch 为此场景提供了 TaskletStep。
📄️ 控制步骤流
随着将多个步骤分组到一个所属作业中的能力,就需要能够控制作业如何从一个步骤“流转”到另一个步骤。一个步骤的失败并不一定意味着整个作业应该失败。此外,可能存在多种“成功”类型,这些类型决定了接下来应该执行哪个步骤。根据一组步骤的配置方式,某些步骤甚至可能完全不被处理。
📄️ 作业和步骤属性的延迟绑定
前面展示的 XML 和平面文件示例都使用了 Spring 的 Resource 抽象来获取文件。这种方式之所以有效,是因为 Resource 接口提供了返回 java.io.File 的 getFile 方法。您可以通过标准的 Spring 配置方式来配置 XML 和平面文件资源: