MultiResourceItemReader - 如果 header 无效则跳过整个文件

MultiResourceItemReader - Skip entire file if header is invalid

我的 Spring 批处理作业读取 csv 文件列表,其中包含两种类型的 header。如果 header 与两种可能的 header 类型之一不匹配,我希望 reader 跳过整个文件。

我看过 。 但我不知道如何验证 header 令牌以确保它们在数量和内容上匹配

我通过执行以下操作解决了这个问题,

public FlatFileItemReader<RawFile> reader() {
    return new FlatFileItemReaderBuilder<RawFile>()
            .skippedLinesCallback(line -> {
                // Verify file header is what we expect
                if (!StringUtils.equals(line, header)) {
                    throw new IllegalArgumentException(String.format("Bad header!", line));
                }
            })
            .name( "myReader" )
            .linesToSkip( 1 )
            .lineMapper( new DefaultLineMapper() {
                {
                    setLineTokenizer( lineTokenizer );
                    setFieldSetMapper( fieldSetMapper );
                }} )
            .build();
}

我在 MultiResourceItemReader 中设置委托时调用了 reader() 方法。

注意 headerlineTokenizerfieldSetMapper 都是我根据文件类型设置的变量(因此哪一组 headers) 我的工作需要阅读。

我们可以在基于 XML 的配置中执行此操作吗?