Spring Batch通用工作设计

问题描述 投票:0回答:1

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

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

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

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

java design-patterns spring-batch etl jobs
1个回答
1
投票

JobStep是你可能需要的。这是一个特殊的步骤,代表一份工作。因此,您可以设计一个具有多个子作业的“主”作业(也就是类型为JobStep的步骤)。显然,每个子作业都可以是常规的Spring Batch作业及其步骤等。这种方法中的主要工作是您正在寻找的“一个通用作业”。

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

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

希望这可以帮助。

© www.soinside.com 2019 - 2024. All rights reserved.