Spring 批处理中平面文件中的空格问题



我正在使用Spring批处理框架来解析固定长度的平面文件,使用FlatFileItemReader将lineMapper作为DefaultLineMapper,fieldSetMapper作为PassThroughFieldSetMapper,lineTokenizer作为PatternMatchingCompositeLineTokenizer。

但是我在处理方面遇到了一些问题,因为文件中的值可能有空格。FieldSet 在删除任何前导或尾随空格后为我提供值。我想要带有空格的值(如果有的话)用于某些验证目的。

我是Spring Batch框架的新手。有人可以告诉我如何解决这个问题吗?

我知道

很久以前就被问过了,但如果有人会有同样的问题:

问题出在 FieldSet 类上,因为当您调用fieldSet.readString()readAndTrim()它将调用该方法并返回修剪后的字符串。要保留带有空格的字符串,您应该调用fieldSet.readRawString()

我也只想回答这个问题:

您可以创建自己的FieldMapper实现,并将其自动连接到您的lineMapper.setFieldSetMapper()

@Component
class CustomFieldSetMapper implements FieldSetMapper<Partnership>{
    @Override
    public Partnership mapFieldSet(FieldSet fieldSet) throws BindException {
        return new Partnership(
                partnerCrmId:fieldSet.readString('partnerCrmId'),
                partnerType: fieldSet.readString('partnerType'),
                customerCrmId: fieldSet.readString('customerCrmId'),
                startDate: fieldSet.readString('startDate'),
                endDate: fieldSet.readString('endDate'),
                clientId: fieldSet.readRawString('clientId'),
                status: fieldSet.readString('status'),
                type: fieldSet.readString('type'),
                providerCode: fieldSet.readString('providerCode'),
                lastModifiedDate: fieldSet.readString('lastModifiedDate')
        )
    }
}

最新更新