【问题标题】:Spring Batch Multi Line record PatternMatch BeanListSpring Batch 多行记录 PatternMatch BeanList
【发布时间】:2014-08-12 14:13:02
【问题描述】:

我有一个文件,其记录分布在多行中,要在春季批处理中进行处理。

Begin
EXP 123 1026
EXP 456 9894
INC 076 2014 1231
INC 187 2013 1045
End

前三个字符用于标识记录的类型。我正在使用 PatternMatchingCompositeLineTokenizer 将记录映射到 bean。如何为 EXP 和 INC 创建一个列表,其中 EXP 列表将包含所有 EXP 记录,而 INC 列表将包含所有 INC 记录?

【问题讨论】:

  • 我不得不撤回我的“关闭”投票,因为我想更好地理解一件事:EXP 和 INC 记录是否与某些父/子关系相关?是否要同时保存所有 EXP 和 INC 记录(作为一个大块)?

标签: java spring spring-batch


【解决方案1】:

看看spring-batch-samples。特别是Multiline example

您可以在 src/main/resources/jobs 中找到 multilineJob.xml,以及所有其他示例作业 xml 文件。

您将需要实现一些您自己的组件。特别是某种聚合阅读器,您需要将其传递给委托阅读器。您可以查看示例,AggregateItemReader。您可以做的是创建一个包装类来保存两个列表,一个用于 EXP,一个用于 INC 对象。对于每个读取的项目,将行/对象添加到包装器中的 EXP 列表或 INC 列表中。

示例中的所有自定义类都在org.springframework.batch.sample.domain 子包中。您应该能够提取它们并运行示例。

【讨论】: