2011-05-30 113 views
0

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

谢谢! Tarun Sapra

+0

创建所有的输出工作,并根据用户输入的作者,运行相应的作业。 – abalogh 2011-05-31 11:21:09

回答

1

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

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

  2. 更干净的方法仍然会使用作业参数,但是它会使用ClassifierCompositeItemWriter委托给相应的作者。这个ItemWriter将为每个实现类型(PDF,Excel等)配置一个ItemWriter委托,并根据您配置的Classifier接口的实现对它们进行指定。从配置的角度来看,这是一种更简洁的方法,但它有一个缺点,就是要评估要处理的ItemWriter的每个单独项目(这是一个缺点,假设整个运行将打算每次运行将所有项目发送到同一个ItemWriter )。

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

迈克尔牛逼米内拉
Pro Spring Batch

+0

你好迈克尔,请你提供一些ClassifierCompositeItemWriter的实例 – 2011-06-02 05:23:23