首页 > 解决方案 > Spring Batch 通用作业设计

问题描述

我很难找到这个问题的正确答案。使用 Spring Batch 框架时,是否可以尝试在一个通用作业中解决所有批处理?

例如,我正在尝试使用相同的作业处理不同的文本文件(具有不同结构的文件)。

我的想法是从调度程序运行作业,将带有我要处理的文件名称的字符串传递给它。然后,我将能够实例化与要处理的文件相关的对象,并且该对象将从一个步骤传递到另一个步骤,并且在每一步中,它将能够回答与其分隔符、字段名称、插入语句,依此类推。

另一方面,我可以为每个文件编写一个作业,但是会重复很多代码。

标签: javadesign-patternsspring-batchetljobs

解决方案


JobStep是您可能需要的。这是一个委托给工作的特殊步骤。因此,您可以设计一个包含多个子作业(又名类型的步骤JobStep)的“主”作业。显然,每个子作业都可以是带有步骤等的常规 Spring Batch 作业。这种方法中的主作业是您正在寻找的“一个通用作业”。

此对象将在每一步中从一个步骤传递到另一个步骤

这可以通过将执行上下文中的对象(例如文件名)从一个步骤传递到下一个步骤来实现。您可以在将数据传递到未来步骤中找到有关此方法的更多详细信息以及代码示例。

希望这可以帮助。


推荐阅读