0
私はリーダー、プロセッサー、ライターを定義しました。Springバッチは、Bean java confにないItemReaderを実装するクラスリーダーのFlatFileItemReaderを定義します。
私は読者がファイルcsvファイルからデータを取得するためには、それらのそれぞれのために自分のクラスを定義したい:私は
@Bean
public Step stepTraitementFile() {
return stepBuilderFactory.get("step1")
.<PersonneDTO, Personne> chunk(1)
.reader(reader())
.processor(processor())
.writer(writer())
.build();
}
@Bean
public Reader reader() {
return new Reader();
}
を持って設定Javaで
public class Reader implements ItemReader<FlatFileItemReader<PersonneDTO>>, StepExecutionListener{
private String file;
@Override
public void beforeStep(StepExecution stepExecution) {
file = (String) stepExecution.getJobExecution().getExecutionContext().get("personneFile");
}
@Override
public FlatFileItemReader<PersonneDTO> read()
throws Exception, UnexpectedInputException, ParseException, NonTransientResourceException {
FlatFileItemReader<PersonneDTO> reader = new FlatFileItemReader<PersonneDTO>();
reader.setResource(new FileSystemResource(file));
reader.setLineMapper(new DefaultLineMapper<PersonneDTO>() {{
setLineTokenizer(new DelimitedLineTokenizer() {{
setNames(new String[] {"nom", "prenom" ,"dateNaissance" });
}});
setFieldSetMapper(new BeanWrapperFieldSetMapper<PersonneDTO>() {{
setTargetType(PersonneDTO.class);
}});
}});
return reader;
}
@Override
public ExitStatus afterStep(StepExecution stepExecution) {
return null;
}
} 私は設定javaにエラーがあります。SimpleStepBuilderタイプのメソッドリーダー(ItemReader)は、引数(Reader)には適用されません。 ネットで見たすべての例では、設定クラスにリーダーが設定されています。
なぜですか?現在の設定では、通常のコールバックを取得しないため、リーダの適切なセットアップが無効になります。追加されたレイヤが混乱と複雑さを増やさない理由は何ですか? .. –
私は別名のクラスで読者を使う必要があります。なぜなら、私が欲しい人から持っているファイル名は、私がやりたいことを理解するためのコードを更新したからです – user3816170