我有一个包含不同记录的平面文件(页眉、记录和页脚)
HR,...
RD,...
FR,...
Run Code Online (Sandbox Code Playgroud)
项目阅读器
@Bean
@StepScope
public FlatFileItemReader reader(@Value("#{jobParameters['inputFileName']}") String inputFileName) {
FlatFileItemReader reader = new FlatFileItemReader();
reader.setResource(new FileSystemResource(inputFileName));
reader.setLineMapper(patternLineMapper());
return reader;
}
Run Code Online (Sandbox Code Playgroud)
@Bean
public LineMapper patternLineMapper() {
PatternMatchingCompositeLineMapper patternLineMapper = new PatternMatchingCompositeLineMapper<>();
tokenizers = new HashMap<String, LineTokenizer>();
try {
tokenizers.put("HR*", headerLineTokenizer());
tokenizers.put("RD*", recordLineTokenizer());
tokenizers.put("FR*", footerLineTokenizer());
} catch (Exception e) {
e.printStackTrace();
}
fieldSetMappers = new HashMap<String, FieldSetMapper>();
fieldSetMappers.put("HR*", new HeaderFieldSetMapper());
fieldSetMappers.put("RD*", new RecordFieldSetMapper());
fieldSetMappers.put("FR*", new FooterFieldSetMapper());
patternLineMapper.setTokenizers(tokenizers);
patternLineMapper.setFieldSetMappers(fieldSetMappers);
return patternLineMapper;
}
Run Code Online (Sandbox Code Playgroud)
它们工作正常,并且 Spring Batch 为每个记录调用适当的读取器,问题是当涉及到项目处理器时,我想使用与我得到的相同的方法,java.lang.ClassCastException因为 Spring …