首页 文章

用于CSV的基于Spring-Batch Java的FileItemWriter

提问于
浏览
1

我有一个包含ItemWriter的Spring Batch服务,用于将数据写入CSV . 我使用了Spring Batch指南给出的示例 . https://spring.io/guides/gs/batch-processing/

我尝试修改ItemWriter以再次创建CSV .

我面临的问题是 -

  • 如果不存在,则不创建CSV文件 .

  • 如果我事先将其提供,则不会向其写入数据 .


@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中完全完成?

1 回答

  • 1

    您正在使用ClassPathResource进行编写 . 我不确定,但我认为你不能写一个ClassPathResource . 尝试使用普通的FileSystemResource并重试 .

    而且,你如何注入作家?你确定它真的被实例化为spring bean吗?为什么将DataSource作为参数,因为您不需要数据源来实例化FlatFileItemWriter .

相关问题