配置一个 Step
Step
正如在域章节中讨论的,Step
是一个域对象,它封装了批处理作业中独立且顺序的阶段,并包含定义和控制实际批处理处理所需的所有信息。这是一个必然模糊的描述,因为任何给定 Step
的内容都由编写 Job
的开发人员自行决定。Step
可以像开发人员希望的那样简单或复杂。一个简单的 Step
可能会从文件中加载数据到数据库中,需要很少或不需要代码(具体取决于所使用的实现)。更复杂的 Step
可能具有作为处理一部分应用的复杂业务规则,如下图所示:
图1. 步骤
小节摘要
🗃️ 块导向处理
10 个项目
📄️ TaskletStep
块状处理不是步骤处理的唯一方式。如果一个步骤必须由存储过程调用组成呢?可以将该调用实现为 ItemReader,并在过程完成后返回 null。然而,这样做有些不自然,因为需要有一个无操作的 ItemWriter。Spring Batch 为此场景提供了 TaskletStep。
📄️ 控制步骤流
随着在所属作业中将步骤分组的能力而来的是,需要能够控制作业如何从一个步骤“流向”另一个步骤。步骤的失败并不一定意味着整个作业应该失败。此外,可能有多种类型的“成功”来决定应该执行下一个哪个步骤。根据一组步骤的配置方式,某些步骤甚至可能根本不会被处理。
📄️ 延迟绑定的作业和步骤属性
前面展示的XML和平面文件示例都使用了Spring Resource抽象来获取文件。这是因为Resource有一个 getFile 方法,它返回一个 java.io.File 对象。您可以使用标准的Spring构造来配置XML和平面文件资源: