基于Spring-Batch Java的FileItemWriter for CSV [英] Spring-Batch Java Based FileItemWriter for CSV

查看:18
本文介绍了基于Spring-Batch Java的FileItemWriter for CSV的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个Spring批处理服务,它联系ItemWriter将数据写入CSV。 我使用了Spring Batch Guide给出的示例。https://spring.io/guides/gs/batch-processing/

我尝试修改ItemWriter以重新创建CSV。

我面临的问题是-

  1. 如果CSV文件不存在,则不会创建该文件。
  2. 如果我事先使其可用,则它不会向其中写入数据。

@Bean
public ItemWriter<Person> writer(DataSource dataSource) {

FlatFileitemWriter<Person> csvWriter = new FlatFileItemWriter<Person>();
csvWriter.setResource(new ClassPathResource("csv/new-data.csv"));
csvWriter.setShouldDeleteIfExists(true);
DelimitedLineAggregator<Person> lineAggregator = new DelimitedLineAggregator<Person>();
lineAggregator.setDelimiter(","); 

BeanWrapperFieldExtractor<Person> fieldExtractor = new BeanWrapperFieldExtractor<Person>();
String[] names = {"firstName", "lastName"};
fieldExtractor.setNames(names);
lineAggregator.setFieldExtractor(fieldExtractor);
csvWriter.setLineAggregator(lineAggregator);
    return csvWriter;
}

我已经浏览了各种链接,但它们显示了使用基于XML的配置的示例。如何完全用Java完成?

推荐答案

您正在使用ClassPathResource进行写入。我不确定,但我认为您不能写入ClassPathResource。请尝试使用普通FileSystemResource,然后重试。

此外,您是如何注入编写器的?您确定它真的实例化为Spring bean吗? 既然不需要数据源来实例化FlatFileItemWriter,为什么要将DataSource作为参数。

这篇关于基于Spring-Batch Java的FileItemWriter for CSV的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆