Spring Batch-基于字段值的多个编写器

Sha*_*kar 3 java spring-batch

我正在为春季批处理工作,供当前使用FlatFileItemWriter的作家使用。

我想根据一些字段值将输入文件内容写到多个平面文件中。默认情况下,Spring批处理是否支持任何类型的功能。[类似于CompositeItemWriter]

例如,我的输入文件内容是这样的。

john,35,retail,10000
joe,34,homeloan,20000
Amy,23,retail,2000
Run Code Online (Sandbox Code Playgroud)

现在,我想根据第三列编写两个不同的文件,这意味着第1行和第3行应转到file1,第2行应转到file2。

我的编写器配置是:

<bean id="fileWriter" class="org.springframework.batch.item.file.FlatFileItemWriter">

        <property name="resource" value="file:C:/output.dat"/>

        <property name="lineAggregator">
            <bean class="org.springframework.batch.item.file.transform.DelimitedLineAggregator">
                <property name="delimiter" value="|" />
                <property name="fieldExtractor">
                    <bean class="org.springframework.batch.item.file.transform.BeanWrapperFieldExtractor">
                        <property name="names" value="field1,field2...." />
                    </bean>
                </property>
            </bean>
        </property>
    </bean>
Run Code Online (Sandbox Code Playgroud)

Mic*_*lla 5

看一下ClassifierCompositeItemWriter。通过此ItemWriter实现,您可以定义一个Classifier选择ItemWriter要委托给哪个已定义的委托实例的。在您的情况下,您将创建一个Classifier基于field4决定的,并将文字委托给的适当实例FlatFileItemWriter

您可以ClassifierCompositeItemWriter在以下文档中了解有关的更多信息:http : //docs.spring.io/spring-batch/trunk/apidocs/org/springframework/batch/item/support/ClassifierCompositeItemWriter.html