【发布时间】:2018-04-06 21:22:18
【问题描述】:
我有一个需要配置的春季批处理作业。从某种意义上说,它应该能够根据传递的内容读取不同的文件并构建阅读器,并且可能每个不同的阅读器都有自己的写入器。下面的示例读取一个文件,我称其为 writer。如何使 load_area.txt 成为动态的。
@Bean
public Step orderStep() {
return stepBuilderFactory.get("loadAStep")
.<FieldSetter, FieldSetter> chunk(3)
.reader(reader())
.processor(processor())
.writer(writer())
.build();
}
@Bean
public FlatFileItemReader<FieldSetter> reader() {
FlatFileItemReader<FieldSetter> reader = new FlatFileItemReader<FieldSetter>();
reader.setResource(new ClassPathResource("load_a.txt"));
reader.setLineMapper(new DefaultLineMapper<GenericFieldSetter>() {{
setLineTokenizer(new DelimitedLineTokenizer("|") {{
setNames(new String[] { "sCode","cName"});
}});
setFieldSetMapper(new BeanWrapperFieldSetMapper<FieldSetter>() {{
setTargetType(FieldSetter.class);
}});
}});
return reader;
}
@Bean
public ItemWriter<GenericFieldSetter> writer() {
return new LoadAreaItemWriter();
}
load_a.txt 22|RRR
load_b.txt aa|ABCDED|123|0000
我想根据传递的内容在运行时读取 load_a.txt 或 load_b.txt 并编写自己的编写器。有可能是 .txt 或任何类型。
FieldSetter.java 有 setter 和 getter
【问题讨论】:
标签: spring-batch reader