Spring 批处理 - 基于字段值的多个编写器
Spring Batch - more than one writer based on field value
我正在为当前使用 FlatFileItemWriter 的作者处理 spring 批处理。
我想根据某个字段值将我的输入文件内容写入多个平面文件。 Spring 批处理是否默认支持任何类型的功能。[类似于 CompositeItemWriter 的东西]
比如我的输入文件内容是这样的
john,35,retail,10000
joe,34,homeloan,20000
Amy,23,retail,2000
现在我想根据第三列写两个不同的文件,这意味着第 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>
看看ClassifierCompositeItemWriter
。此 ItemWriter
实现允许您定义一个 Classifier
来选择要委托给哪个已定义委托 ItemWriter
实例。在您的情况下,您将创建一个基于 field4 决定的 Classifier
并将写入委托给 FlatFileItemWriter
.
的适当实例
您可以在此处的文档中阅读有关 ClassifierCompositeItemWriter
的更多信息:http://docs.spring.io/spring-batch/trunk/apidocs/org/springframework/batch/item/support/ClassifierCompositeItemWriter.html
使用 ClassifierCompositeItemWriter
Calls one of a collection of ItemWriters for each item, based on a
router pattern implemented through the provided Classifier.
路由器模式基于 bean 内容
我正在为当前使用 FlatFileItemWriter 的作者处理 spring 批处理。
我想根据某个字段值将我的输入文件内容写入多个平面文件。 Spring 批处理是否默认支持任何类型的功能。[类似于 CompositeItemWriter 的东西]
比如我的输入文件内容是这样的
john,35,retail,10000
joe,34,homeloan,20000
Amy,23,retail,2000
现在我想根据第三列写两个不同的文件,这意味着第 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>
看看ClassifierCompositeItemWriter
。此 ItemWriter
实现允许您定义一个 Classifier
来选择要委托给哪个已定义委托 ItemWriter
实例。在您的情况下,您将创建一个基于 field4 决定的 Classifier
并将写入委托给 FlatFileItemWriter
.
您可以在此处的文档中阅读有关 ClassifierCompositeItemWriter
的更多信息:http://docs.spring.io/spring-batch/trunk/apidocs/org/springframework/batch/item/support/ClassifierCompositeItemWriter.html
使用 ClassifierCompositeItemWriter
Calls one of a collection of ItemWriters for each item, based on a router pattern implemented through the provided Classifier.
路由器模式基于 bean 内容