数据写入多种文件中 将数据写入多个文件,需要使用CompositItemWriter或者使用ClassifierCompositItemWriter 二者差异: CompositeItemWriter 是把全量数据分别写入多个文件中; ClassifierCompositeItemWriter是根据指定规则,把满足条件的数据写入指定文件中; 将数据分别写入到xml文件和json文件中,在CompositeItemWriter MyCustomerLineAggregator()); itemWriter.afterPropertiesSet(); return itemWriter; } CompositeItemWriter 使用CompositeItemWriter输出数据到多个文件 ``` @Bean public CompositeItemWriter customerCompositeItemWriter () throws Exception { CompositeItemWriter itemWriter = new CompositeItemWriter<>(); // 指定多个输出对象
如果不想用分类,希望所有数据都输出到对应格式的文本中,则可以使用CompositeItemWriter作为代理输出,修改MultiFileItemWriteDemo: @Component public .writer(multiFileItemWriter()) .build(); } // 输出数据到多个文件 private CompositeItemWriter <TestData> multiFileItemWriter() { // 使用CompositeItemWriter代理 CompositeItemWriter<TestData > writer = new CompositeItemWriter<>(); // 设置具体写代理 writer.setDelegates(Arrays.asList(
<String, String>chunk(2) .reader(itemReader()) .writer(compositeItemWriter()) .stream(fileItemWriter1 ()) .stream(fileItemWriter2()) .build(); } 二是使用相关方法的代理: @Bean public CompositeItemWriter compositeItemWriter ItemWriter> writers = new ArrayList<>(2); writers.add(fileItemWriter1()); writers.add(fileItemWriter2()); CompositeItemWriter itemWriter = new CompositeItemWriter(); itemWriter.setDelegates(writers); return itemWriter; } StepExecution
writer.setResource(new FileSystemResource(path)); writer.afterPropertiesSet(); return writer; } } 第五节 数据输出到多个文件 CompositeItemWriter ClassifierCompositeItemWriter @Bean public CompositeItemWriter<Customer> multiFileItemWriter() throws Exception { CompositeItemWriter<Customer> writer=new CompositeItemWriter<Customer>(); writer.setDelegates
可以使用组合模式来实现这个目的: public class CompositeItemWriter<T> implements ItemWriter<T> { ItemWriter<T> itemWriter ; public CompositeItemWriter(ItemWriter<T> itemWriter) { this.itemWriter = itemWriter;
示例如下: public class CompositeItemWriter<T> implements ItemWriter<T> { ItemWriter<T> itemWriter; public CompositeItemWriter(ItemWriter<T> itemWriter) { this.itemWriter = itemWriter; } public void write(List 1.5 委托模式(Delegate Pattern)与注册Step 请注意, CompositeItemWriter是委托模式的一个示例, 这在Spring Batch中很常见的。 ioSampleJob"> <step name="step1"> <tasklet> <chunk reader="fooReader" processor="fooProcessor" writer="<em>compositeItemWriter</em> commit-interval="2"> <streams> <stream ref="barWriter" /> </streams> </chunk> </tasklet> </step> </job> <bean id="<em>compositeItemWriter</em>