Spring-批处理 Java 基于 CSV 的 FileItemWriter

Spring-Batch Java Based FileItemWriter for CSV

我有一个 Spring 包含 ItemWriter 的批处理服务,用于将数据写入 CSV。 我使用了 Spring 批处理指南给出的示例。 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 并重试。

另外,writer怎么注入?您确定它真的被实例化为 spring bean 吗? 为什么要将 DataSource 作为参数,因为您不需要数据源来实例化 FlatFileItemWriter。