【发布时间】:2020-12-31 19:14:19
【问题描述】:
我正在使用 Spring 批处理,并且有一个 ItemWriter,如下所示:
public class MyItemWriter implements ItemWriter<Fixing> {
private final FlatFileItemWriter<Fixing> writer;
private final FileSystemResource resource;
public MyItemWriter () {
this.writer = new FlatFileItemWriter<>();
this.resource = new FileSystemResource("target/output-teste.txt");
}
@Override
public void write(List<? extends Fixing> items) throws Exception {
this.writer.setResource(new FileSystemResource(resource.getFile()));
this.writer.setLineAggregator(new PassThroughLineAggregator<>());
this.writer.afterPropertiesSet();
this.writer.open(new ExecutionContext());
this.writer.write(items);
}
@AfterWrite
private void close() {
this.writer.close();
}
}
当我运行我的春季批处理作业时,项目被写入文件:
Fixing{id='123456', source='TEST', startDate=null, endDate=null}
Fixing{id='1234567', source='TEST', startDate=null, endDate=null}
Fixing{id='1234568', source='TEST', startDate=null, endDate=null}
1/ 我怎样才能只写入数据,以便值以逗号分隔,并且在它为空的地方,它不被写入。所以目标文件应该是这样的:
123456,TEST
1234567,TEST
1234568,TEST
2/ 其次,我遇到了一个问题,只有当我退出 Spring Boot 应用程序时,我才能看到文件被创建。我想要的是,一旦它处理完所有项目并写入,文件就可以在不关闭 Spring Boot 应用程序的情况下使用。
【问题讨论】:
标签: java spring spring-boot spring-batch