Vous pouvez injecter un DelimitedLineTokenizer et vous pouvez définir le délimiteur selon les besoins. vous pouvez le rendre générique en utilisant StepExecutionListener et avoir besoin de surcharger la méthode beforeStep(). Vous allez définir le délimiteur dans StepExecution. Lorsque vous analysez le fichier qui sont "," séparés, puis stepExecution.getExecutionContext(). PutString ("delimiter", ","); et lorsque le fichier est séparé par "|" puis stepExecution.getExecutionContext(). putString ("délimiteur", "|");
Mais vous devez créer deux travaux. Besoin de spécifier l'écouteur en conséquence.
Vous pouvez voir l'exemple d'expliquer ci-dessus la logique de Spring Batch on Walking Techie
Code pour lecteur générique:
@Bean
@StepScope
public FlatFileItemReader<Domain> reader(@Value("#{stepExecutionContext[delimiter]}") String delimiter) {
FlatFileItemReader<Domain> reader = new FlatFileItemReader<>();
reader.setResource(new ClassPathResource("sample-data.csv"));
reader.setLineMapper(new DefaultLineMapper<Domain>() {{
setLineTokenizer(new DelimitedLineTokenizer() {{
setNames(new String[]{"id", "name"});
setDelimiter(delimiter);
}});
setFieldSetMapper(new BeanWrapperFieldSetMapper<Domain>() {{
setTargetType(Domain.class);
}});
}});
return reader;
}
Vous pouvez trouver les nombreux exemples sur lot de printemps en printemps de démarrage Spring Batch Tutorial. Vous trouverez ici toutes sortes de problèmes liés au lot de printemps.