将对象从LineCallbackHandler传递给ItemWriter

时间:2012-02-07 06:57:08

标签: spring-batch

我正在编写一个批处理应用程序,它从文件中逐行读取,处理内容并写入数据库。我正在使用FlatFileItemReader从文件中读取。

文件中的第一行是特殊的(标题),使用linesToSkip跳过并使用LineCallbackHandlerHeaderHandler)进行处理。 HeaderHandler使用标头信息构建缓存。

现在我想在ItemWriter中使用此缓存。我不确定如何将我在HeaderHandler内构建的缓存对象传递给我的ItemWriter。这样做有干净的方法吗?

1 个答案:

答案 0 :(得分:2)

你至少有两种可能性:

  1. 使用StepExecutionContext作为数据的临时内存,看看spring批处理文档: passing data to future steps(只需忽略promotionListener part)您的headerHandler将缓存写入上下文和 writer从上下文中提取缓存
  2. 使用带有自定义DataObjectClass或String,Map等的spring bean,它们在headerHandler中为injected,而(custom)itemWriter都相应地使用它