Java 如何在SpringBatch中调用块进程中的另一个步骤?

Java 如何在SpringBatch中调用块进程中的另一个步骤?,java,spring,spring-batch,Java,Spring,Spring Batch,弹簧批次是否有以下可能/建议 我有一个csv文件,比如foo.csv。我设置了一个区块进程,将文件读入Foo对象,然后将它们读入Bar对象。最后,这些将被写入文件bars.csv中 foos.csv---[IR]--->Foo---[IP]--->Bar----[IW]--->Bar.csv 其中IR代表ItemReader,IP代表ItemProcessor,IW代表ItemWriter 现在,我想进一步处理Bar对象,将其转换为Baz对象,并对其执行其他操作,例如,将其写入文件Baz.csv

弹簧批次是否有以下可能/建议

我有一个csv文件,比如foo.csv。我设置了一个区块进程,将文件读入Foo对象,然后将它们读入Bar对象。最后,这些将被写入文件bars.csv中

foos.csv---[IR]--->Foo---[IP]--->Bar----[IW]--->Bar.csv

其中IR代表ItemReader,IP代表ItemProcessor,IW代表ItemWriter

现在,我想进一步处理Bar对象,将其转换为Baz对象,并对其执行其他操作,例如,将其写入文件Baz.csv等

foos.csv---[IR]--->Foo---[IP 1]--->Bar---[IW 1]--->Bar.csv
----[IP 2]------>Baz------[IW 2]------>Baz.csv

或者,甚至更好

foos.csv---[IR]--->Foo---[IP 1]--->Bar---[IW 1]--->Bar.csv
-----[IW 2]--->[下一步]

我们重复调用迭代中的下一步,从而传递下一个Bar对象。在下一步中,我们可以进行到Baz的转换


总之:是否可以从块过程中调用步骤?这是个好主意吗?如果没有,有哪些替代方案?

目前,您至少有两种可能的解决方案

  • ,每个处理器也可以是一个编写器
  • 使用数据库保存中间工作,并将其用于未来步骤和/或

您的上一个用例看起来更像是用

实现的。您可以考虑使用A来将数据从处理步骤输出到两个不同的源,一个是“Bar。CSV”,一个是“BAZ”ItMeWror。p> 然后,您的流程将如下所示:

foos.csv ---- [IR] ---> Foo --- [IP1] ---> Bar ---- [IW1] ----> bars.csv 
                                                    [IW2] ----> Baz --- [further steps]
这会解决您的用例吗