我有一个包含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 回答
您正在使用ClassPathResource进行编写 . 我不确定,但我认为你不能写一个ClassPathResource . 尝试使用普通的FileSystemResource并重试 .
而且,你如何注入作家?你确定它真的被实例化为spring bean吗?为什么将DataSource作为参数,因为您不需要数据源来实例化FlatFileItemWriter .