将参数从Processor传递给Writer

时间:2014-05-21 15:11:13

标签: java spring-batch

我有一个步骤,包括读取器,处理器和编写器,用于将数据写入文件。

根据处理的数据类型,我想将其写入不同的位置。

如何在运行时指定应写入数据的阅读器或处理器?

示例(可能是愚蠢的):

read(items) - > process(items)> write(to apple folder)

read(items) - > process(items)> write(to tomato folder)

我不知道这些物品的顺序是什么,也不知道它们的类型。我只在读者和处理器中发现了这一点,但作者再次不知道它处理的是什么。

有没有办法让这种情况发生(比如reader.getWriter(。。setAttribute()或使用某种会话)?

1 个答案:

答案 0 :(得分:0)

组合是Spring Batch中的一个强大主题。在这种情况下,您将要实现一个复合ItemWriter,它根据需要编写的位置委托给子ItemWriter。您有两个选项,实现自己的选项或使用Spring Batch提供的ClassifierCompositeItemWriter。它实际上取决于您的选择过程的逻辑。您可以在此处的文档中详细了解ClassifierCompositeItemWriterhttp://docs.spring.io/spring-batch/trunk/apidocs/org/springframework/batch/item/support/ClassifierCompositeItemWriter.html

使用此方法时的一个重要注意事项是,代理ItemWriter不会自动注册为ItemStream。您需要手动执行此操作。您可以在此处了解如何执行此操作:http://docs.spring.io/spring-batch/trunk/reference/htmlsingle/#delegatePatternAndRegistering