我使用Spring批处理框架使用FlatFileItemReader
解析固定长度的平面文件,其中 lineMapper 为DefaultLineMapper
, fieldSetMapper 为PassThroughFieldSetMapper和< strong> lineTokenizer 作为PatternMatchingCompositeLineTokenizer。
但由于文件中的值可能包含空格,因此我遇到了有关处理的问题。删除任何前导或尾随空格后, FieldSet 会为我提供值。我希望带有空格的值(如果有的话)用于某些验证目的。
我是Spring Batch框架的新手。有人可以告诉我如何解决这个问题吗?
答案 0 :(得分:1)
我知道这是很久以前问的,但如果有人会遇到同样的问题:
问题在于FieldSet类,因为当您调用fieldSet.readString()
时,它将调用readAndTrim()
方法并返回修剪后的字符串。
要保留保留空格的字符串,您应该调用fieldSet.readRawString()
答案 1 :(得分:0)
我也只想回答这个问题:
您可以创建自己的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')
)
}
}