我最近开始学习Spring Batch,以便利用其一些更高级的功能,如异步批处理,作业停止和调度来替换现有的批处理功能,并实现新的批处理功能。现在,我正在试图找出如何动态处理多个批处理文件并为每个输入文件生成“收据”文件,我对Spring Batch架构师的一些设计决策感到困惑。看起来为了处理一个简单的平面CSV文件并生成输出,我将不得不手动破解我的ApplicationContext中的bean并在运行时手动设置它们的“资源”属性,以便实现我想要的FlatFileItemReader和FlatFileItemWriter。对于据称是多线程,高性能批处理框架的东西来说,这既不安全也不好。我只是错过了一些东西吗?
答案 0 :(得分:0)
似乎您可以使用MultiResourceItemReader
指定多个资源,并将FlatFileItemReader
设置为MultiResourceItemReaders
委托。
答案 1 :(得分:0)
事实证明,我误解了一些文档。 Spring Batch引入了一个新的bean作用域“step”,并使用它来为基于bean的批处理流中的每个步骤创建新的bean,并在读者和编写者的配置中给出了名称。然后使用Spring的EL动态配置它们。至于让多个批次进行,我只是完成了单个批量定义的配置,然后将多个批处理推送到代码中。