gpt4 book ai didi

java - Spring Batch - 用于不同分隔文件的 FlatFileItemReader

转载 作者:行者123 更新时间:2023-12-02 12:40:14 25 4
gpt4 key购买 nike

我有两个不同的文件,一个由管道分隔符“|”分隔一个由逗号“,”组成​​。

我正在使用 Spring Batch 使用 FlatFileItemReader 来处理这些文件。我不想让文件有两个读者和两个作者。我可以为这两个文件提供一个通用的 FlatFileItemReader 吗?

文件将映射到的对象也不同。

最佳答案

您可以注入(inject) DelimitedLineTokenizer,并且可以根据要求设置分隔符。您可以使用 StepExecutionListener 使其通用,并且需要重写 beforeStep() 方法。您将在 StepExecution 中设置分隔符。当您解析以“,”分隔的文件时stepExecution.getExecutionContext().putString("分隔符", ",");当文件用“|”分隔时然后 stepExecution.getExecutionContext().putString("delimiter", "|");

但是你需要创造两个就业机会。需要相应地指定监听器。

上面解释逻辑的例子可以从 Spring Batch on Walking Techie 看到
通用阅读器的代码:

@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;
}

您可以从Spring Batch Tutorial找到Spring Boot中关于Spring Batch的许多示例。您会在这里找到与 Spring Batch 相关的所有类型的问题。

关于java - Spring Batch - 用于不同分隔文件的 FlatFileItemReader,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44966644/

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