小编Ham*_*ada的帖子

如何针对不同的记录调用合适的项目处理器?

我有一个包含不同记录的平面文件(页眉、记录和页脚)

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 …

spring spring-batch spring-boot

5
推荐指数
1
解决办法
1481
查看次数

标签 统计

spring ×1

spring-batch ×1

spring-boot ×1