spring - Spring Batch:多个作者
问题描述
我有一个 XML 输入文件(非常大),必须按以下方式处理:
- 从 xml 文件中读取每个项目 X
- 为每个项目 X 更改一些字段(更新后的 X 将表示为 X')
- 将所有更新的 X' 项目写入新文件
- 将每个项目 X' 转换为某个新对象 Y
- 将每个转换后的 Y 对象写入其他新文件
因为输入/输出文件很大,所以我使用 StaxItemReader 和 StaxItemWriter 来读/写文件。同时,我实现了 ComposedItemProcessor,它将 X 转换为 X',然后将 X' 转换为 Y。问题是:如何轻松使用 StaxItemWriter 来编写:X' 和 Y?
最简单的方法是分两步处理:
- 从文件读取 -> 转换为 X' -> 将 X' 保存到文件 UPDATED_X.xml
- 读取文件 UPDATED_X.xml -> 转换为 Y -> 将 Y 保存在文件 Y.xml 中
但我想避免不必要的解析。是否可以分叉作业并同时写入 X' 和 Y?
解决方案
同时,我实现了 ComposedItemProcessor,它将 X 转换为 X',然后将 X' 转换为 Y。问题是:如何轻松使用 StaxItemWriter 来编写:X' 和 Y?
在这种情况下,您的输入项目的类型ComposedItemProcessor
是 X,输出是 Y。Y 是进入项目编写器的项目类型。因此,您的项目编写者将无法编写 X' 项目。
根据您的要求,write all updated X' items to new file
并且transform each item X' to some new object Y
是使您的步骤相互依赖的原因。所以我想你需要按照你提到的两个步骤进行。