【发布时间】:2020-11-08 17:43:35
【问题描述】:
我正在开发 Spring Batch,它从一个位置从 csv 文件中读取记录并保存到 mongo DB 中。我想读取特定对象类型的记录,但在写入时它应该是不同的对象类型。 就像我正在使用 obj1 读取文件一样,我想将 obj1 设置为 obj2 并保存到 DB。 下面是我的代码。
@Bean
public Job readCSVFileJob() {
return jobBuilderFactory
.get("readCSVFileJob")
.incrementer(new RunIdIncrementer())
.start(step())
.build();
}
@Bean
public Step step() {
return stepBuilderFactory
.get("step")
.<FileObj, FileObj>chunk(5)
.reader(reader(null))
.faultTolerant().skipPolicy(fileVerificationSkipper())
.writer(writer())
.build();
}
@Bean
public SkipPolicy fileVerificationSkipper() {
return new FileVerificationSkipper();
}
@Bean
@StepScope
public FlatFileItemReader<FileObj> reader(@Value("#{jobParameters['fullPathFileName']}") String fullPathFileName) {
FlatFileItemReader<FileObj> itemReader = new FlatFileItemReader<FileObj>();
itemReader.setLineMapper(lineMapper());
itemReader.setLinesToSkip(1);
try {
itemReader.setResource(new PathResource(fullPathFileName)); // set resource from a FTP location
} catch (Exception e) {
e.printStackTrace();
}
return itemReader;
}
@Bean
public LineMapper<FileObj> lineMapper() {
//code for line mapper this works fine
return lineMapper;
}
@Bean
public MongoItemWriter<OBJ2> writer() {
// in this I want to write in mongo DB with OBJ2 something like below
repository.save(obj2);
return writer;
}
【问题讨论】:
标签: java spring spring-boot spring-batch