如何在春季批量链接多个ItemReader?

时间:2016-01-19 11:55:06

标签: java spring spring-batch

是否可以在ItemReader中使用和链接多个spring-batch

我有一个包含多个XML记录的大文件。 我现在想要使用FlatFileItemReader来读取行,SeparationPolicy来检测xml记录的开始和结束。

然后我想使用StaxEventItemReader将xml转换为java类。

那么可以将两个读者联系起来吗?

2 个答案:

答案 0 :(得分:2)

您可以通过滚动自己的ItemReader来完成此操作,该ItemReader由其他两个读者组成,但我不确定这将如何处理stax事件(我怀疑不会)。像这样:

http://forum.spring.io/forum/spring-projects/batch/51940-composite-reader

您可能需要考虑的另一个建议是将其转换为两个步骤:

  1. 使用FlatFileItemReader将文件预处理为适当的XML并将其写入另一个文件
  2. 使用StaxEvenItemReader
  3. 读取步骤1中的XML文件

    这种方法的结果是,如果stax端出现问题,你仍然可以将平面文件解析的工作保存在一个中间文件中,你可以重试它。

答案 1 :(得分:2)

执行JsonLineMapper之类的事情 写一个自定义LineMapper;注入JAXB上下文和解组行来创建域对象。