基于Spring-Batch Java的FileItemWriter for CSV

时间:2015-09-15 16:52:50

标签: spring spring-batch

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

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

我面临的问题是 -

  1. 如果不存在,则不会创建CSV文件。
  2. 如果我事先将其提供给它,则不会向其写入数据。
  3. @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 个答案:

答案 0 :(得分:1)

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

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