gpt4 book ai didi

java - ItemReader 返回一个包含整行作为字符串的 FlatFileItemReader

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:46:53 24 4
gpt4 key购买 nike

使用 Spring Batch 我试图将输入文件的每一行作为 String 提供给 ItemProcessor 中没有任何“CSV 解析”项目阅读器

我提出了一个包含以下 reader() 方法的配置 Java 类(使用 @Configuration@EnableBatchProcessing)下一个 ItemProcessor 抛出 ClassCastException

ItemReader 应读取输入文件并将输入文件的每一行作为 String 传递给 ItemProcessor

@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 中得到一个异常,它需要来自 reader()String:

    java.lang.ClassCastException: org.springframework.batch.item.file.transform.DefaultFieldSet cannot be cast to java.lang.String

我写的自定义ItemProcessor定义为:

    public class MyOwnCustomItemProcessor implements ItemProcessor<String, MyOwnCustomBusinessBean> {

我相信我应该在 ItemReader 中使用这个 PassThroughFieldSetMapper,我不想使用任何类型的分词器。根据文档,我认为我必须使用它并且我无法避免它,但我一直在抛出异常。

如何将每个输入行作为 String 直接“传输”到 ItemProcessor,例如?

最佳答案

使用PassThroughLineMapper如果还有的话

public class PassThroughLineMapper implements LineMapper<String> {
@Override
public String mapLine(String line, int lineNumber) throws Exception {
return line;
}
}

关于java - ItemReader 返回一个包含整行作为字符串的 FlatFileItemReader,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21914282/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com