Java ItemReader返回包含整行字符串的FlatFileItemReader

Java ItemReader返回包含整行字符串的FlatFileItemReader,java,spring,parsing,spring-batch,Java,Spring,Parsing,Spring Batch,使用SpringBatch,我试图将输入文件的每一行作为字符串提供给ItemProcessor,而不在ItemReader中进行任何“CSV解析” 我提出了一个配置Java类(使用@configuration和@EnableBatchProcessing),其中包含以下reader()方法,该方法使下一个ItemProcessor抛出ClassCastException 此ItemReader应读取一个输入文件,并将输入文件的每一行作为字符串传递给itemsprocessor @Bean pub

使用SpringBatch,我试图将输入文件的每一行作为
字符串
提供给
ItemProcessor
,而不在
ItemReader
中进行任何“CSV解析”

我提出了一个配置Java类(使用
@configuration
@EnableBatchProcessing
),其中包含以下
reader()
方法,该方法使下一个
ItemProcessor
抛出
ClassCastException

ItemReader
应读取一个输入文件,并将输入文件的每一行作为
字符串
传递给
itemsprocessor

@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;
}
我编写的自定义
ItemProcessor
定义为:

    public class MyOwnCustomItemProcessor implements ItemProcessor<String, MyOwnCustomBusinessBean> {
公共类MyOwnCustomItemProcessor实现ItemProcessor{
我相信我应该在
ItemReader
中使用这个
PassThroughFieldSetMapper
,我不想使用任何类型的标记器。根据文档,我认为我必须使用它,我无法避免它,但我一直在抛出异常

如何将每个输入行直接作为
字符串
传输到
项目处理器
,例如?

在其他可用的情况下使用

public class PassThroughLineMapper implements LineMapper<String> {
  @Override
  public String mapLine(String line, int lineNumber) throws Exception {
    return line;
  }
}
公共类PassThroughLineMapper实现LineMapper{
@凌驾
公共字符串映射行(字符串行,整数行号)引发异常{
回流线;
}
}

我同时还添加了一个解决方案(使用
字段集
作为
项目阅读器
项目处理器
的输入参数),即使@bellabax提供了更好的解决方案

检查我如何使用类型为
FieldSet
的对象

ItemReader

    java.lang.ClassCastException: org.springframework.batch.item.file.transform.DefaultFieldSet cannot be cast to java.lang.String
@Bean
public ItemReader<FieldSet> reader() {

    FlatFileItemReader<FieldSet> reader = new FlatFileItemReader<>();
    reader.setResource(new ClassPathResource("data-to-process.txt"));
    reader.setLineMapper(new DefaultLineMapper() {{
        setLineTokenizer(new DelimitedLineTokenizer());
        setFieldSetMapper(new PassThroughFieldSetMapper() {{

        }});

    }});
    return reader;
}
项目处理器

public class MyOwnCustomItemProcessor implements ItemProcessor<FieldSet, MyOwnCustomBusinessBean> {

    @Override
    public MyOwnCustomBusinessBean process(FieldSet originalInputLineFromInputFile) throws Exception {

        String originalInputLine = originalInputLineFromInputFile.getValues()[0];

        [...]
公共类MyOwnCustomItemProcessor实现ItemProcessor{
@凌驾
公共MyOwnCustomBusinessBean进程(字段集originalInputLineFromInputFile)引发异常{
字符串originalInputLine=originalInputLineFromInputFile.getValues()[0];
[...]
public class MyOwnCustomItemProcessor implements ItemProcessor<FieldSet, MyOwnCustomBusinessBean> {

    @Override
    public MyOwnCustomBusinessBean process(FieldSet originalInputLineFromInputFile) throws Exception {

        String originalInputLine = originalInputLineFromInputFile.getValues()[0];

        [...]