我有一个包含ItemWriter的Spring Batch服务,用于将数据写入CSV。 我使用了Spring Batch指南给出的示例。 https://spring.io/guides/gs/batch-processing/
我尝试修改ItemWriter以再次创建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中完全完成?
答案 0 :(得分:1)
您正在使用ClassPathResource进行编写。我不确定,但我认为你不能写一个ClassPathResource。尝试使用普通的FileSystemResource并重试。
而且,你是如何注入作家的?你确定它真的被实例化为spring bean吗? 为什么将DataSource作为参数,因为您不需要数据源来实例化FlatFileItemWriter。