Spring Batch是否可行/可取?
我有一个csv文件,比如说foo.csv。我设置了一个块进程,将文件读入Foo对象,然后将它们处理为Bar对象。最后将这些文件写入文件bars.csv。
foos.csv ---- [IR] ----> Foo ---- [IP] ----->吧------ [IW] ----> bars.csv
其中IR代表ItemReader,Item代表ItemProcessor,IW代表ItemWriter
现在我想进一步处理Bar对象,将其转换为Baz对象并使用它做其他一些事情,例如把它写入文件bazs.csv左右。
foos.csv ---- [IR] ----> Foo ---- [IP 1] ----->吧------ [IW 1] ----> bars.csv
---- [IP 2] -----> Baz ------ [IW 2] ----> bazs.csv
或者,甚至更好
foos.csv ---- [IR] ----> Foo ---- [IP 1] ----->吧------ [IW 1] ----> bars.csv
----- [IW 2] ----> [下一步]我们在迭代中重复调用下一步,从而传递下一个Bar对象。在下一步中,我们可以转换为Baz。
总结一下:是否可以从块进程中调用一个步骤?这是个好主意吗?如果没有,有哪些替代方案?
答案 0 :(得分:3)
目前您至少有2种可能的解决方案
您的上一个用例看起来更好用[{3}}
实现答案 1 :(得分:2)
您可以考虑使用CompositeItemWriter将处理步骤中的数据输出到两个不同的源,一个输出到“bars.csv”,一个输出到某种“Baz”ItemWriter。
您的流程将如下所示:
foos.csv ---- [IR] ---> Foo --- [IP1] ---> Bar ---- [IW1] ----> bars.csv
[IW2] ----> Baz --- [further steps]
这会解决您的使用案例吗?