0

在春季批处理示例中,有很多将数据从 csv 格式复制到 db 表、将 db 表复制到 csv 等的示例。我想知道是否有一种方法可以让用户选择特定的作业,例如从 csv 复制数据文件并指定目标格式,即 excel、db、pdf。因此,作业的目标格式取决于用户输入。?

谢谢!塔伦萨普拉

4

1 回答 1

1

鉴于 Spring Batch 是一个不处理用户输入的批处理框架,我不确定您在这里使用的是正确的场景。但是,这里有几个不同的选项:

  1. 使用作业参数和决策步骤来指导 ItemReader/ItemWriter 的正确组合。这样做的缺点是您需要为每个实现定义一个步骤(一个用于处理 PDF,一个用于 Excel 等),但是由于每次运行该作业只会进行一次选择,因此对表现。

  2. 更简洁的方法仍将使用作业参数,但是它将使用 ClassifierCompositeItemWriter 委托给适当的编写器。这个 ItemWriter 将为每个实现类型(PDF、Excel 等)配置一个 ItemWriter 委托,并根据您配置的 Classifier 接口的实现向它们发出指令。虽然从配置的角度来看这是一种更简洁的方法,但它的缺点是评估 ItemWriter 处理的每个单独的项目(假设整个运行旨在将所有项目发送到每次运行的同一个 ItemWriter )。

  3. 最后,我认为您应该能够在理论上使用 Spring 的 bean factory 概念在作业开始时注入 ItemWriter。作为记录,这纯粹是猜测,我实际上并没有尝试过。

Michael T Minella Pro Spring Batch
的作者

于 2011-06-01T20:22:55.783 回答