ItemReader Rückkehr eine FlatFileItemReader mit ganze Zeilen als strings
Mit Spring Batch, die ich versuche zu bekommen jede Zeile der input-Datei als String
geben es die ItemProcessor
ohne "CSV-parsing" in der ItemReader
.
Ich kam mit einer Konfiguration Java-Klasse (mit @Configuration
und @EnableBatchProcessing
) mit den folgenden reader()
Methode, die das nächste ItemProcessor
zu werfen ClassCastException
obwohl.
Diese ItemReader
Lesen sollte, eine Eingabe-Datei und übergeben Sie an den ItemProcessor
jede Zeile der Eingabedatei als String
.
@Bean
public ItemReader<String> reader() {
FlatFileItemReader<String> reader = new FlatFileItemReader<>();
reader.setResource(new ClassPathResource("data-to-process.txt"));
reader.setLineMapper(new DefaultLineMapper() {{
setLineTokenizer(new DelimitedLineTokenizer());
setFieldSetMapper(new PassThroughFieldSetMapper());
}});
return reader;
}
Beim ausführen des vorherigen code, den ich erhalte eine Ausnahme in der ItemProcessor
was erwartet einen String
von der reader()
:
java.lang.ClassCastException: org.springframework.batch.item.file.transform.DefaultFieldSet cannot be cast to java.lang.String
Benutzerdefinierte ItemProcessor
ich geschrieben habe, ist definiert als:
public class MyOwnCustomItemProcessor implements ItemProcessor<String, MyOwnCustomBusinessBean> {
Ich glaube, ich sollte zu diesem PassThroughFieldSetMapper
im ItemReader
und möchte ich nicht verwenden, jede Art von tokenizer. Nach den Unterlagen, die ich denke, ich muss es verwenden und ich kann es nicht verhindern, aber ich behalte immer Ausnahmen.
Wie kann ich die "übertragen" jede Eingabezeile direkt als String
zu einem ItemProcessor
z.B. ?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwenden PassThroughLineMapper wenn verfügbar, sonst
Ich Hinzugefügt habe auch einen workaround gefunden habe ich in der Zwischenzeit (mit
FieldSet
als input-parameter derItemReader
und dieItemProcessor
), auch wenn @bellabax sofern eine bessere Lösung.Schauen, wie ich die Objekte vom Typ
FieldSet
.Den
ItemReader
:Den
ItemProcessor
im Frühjahr Batch-Konfiguration-Klasse:Den
ItemProcessor
: