Spring batch SpringBatch-获取FieldSetMapper上的行号
我需要把行号输入FieldSet映射器。我该怎么做 我想使用线号作为映射器生成的结果对象的字段Spring batch SpringBatch-获取FieldSetMapper上的行号,spring-batch,Spring Batch,我需要把行号输入FieldSet映射器。我该怎么做 我想使用线号作为映射器生成的结果对象的字段 谢谢。我认为您可以使用spEL表达式#{fileReader.currentItemCount},但是有用于此目的的SB接口 标记接口,指示项目应具有项目计数 开始吧。通常用于 AbstractItemCountingItemStreamItemReader 我认为您可以使用spEL表达式#{fileReader.currentItemCount},但是有用于此目的的SB接口 标记接口,指示项目应
谢谢。我认为您可以使用spEL表达式#{fileReader.currentItemCount},但是有用于此目的的SB接口 标记接口,指示项目应具有项目计数 开始吧。通常用于 AbstractItemCountingItemStreamItemReader
我认为您可以使用spEL表达式#{fileReader.currentItemCount},但是有用于此目的的SB接口 标记接口,指示项目应具有项目计数 开始吧。通常用于 AbstractItemCountingItemStreamItemReader
我意识到我可以通过以下方式使用我自己的测线器覆盖默认测线器,将测线号值放入MyObject:
import org.springframework.batch.item.file.FlatFileParseException;
导入org.springframework.batch.item.file.LineMapper;
导入org.springframework.batch.item.file.transform.LineTokenizer;
导入org.springframework.beans.factory.initializebean;
导入org.springframework.util.Assert;
导入my.model.MyObject;
公共类MyLineMapper实现LineMapper,初始化bean{
专用LineTokenizer标记器;
私有资源fieldSetMapper fieldSetMapper;
公共MyObject映射行(字符串行、整数行号)引发异常{
试一试{
MyObject r=fieldSetMapper.mapFieldSet(tokenizer.tokenize(line));
//这是修改
r、 设置行号(行号);
返回r;
}
捕获(例外情况除外){
抛出新的FlatFileParseException(“第行:+lineNumber+
,输入=[“+行+”],例如,行,行号);
}
}
public void setLineTokenizer(LineTokenizer标记器){
this.tokenizer=tokenizer;
}
public void setFieldSetMapper(ResourceFieldSetMapper fieldSetMapper){
this.fieldSetMapper=fieldSetMapper;
}
公共无效afterPropertiesSet(){
notNull(标记器,“必须设置LineTokenizer”);
Assert.notNull(fieldSetMapper,“必须设置fieldSetMapper”);
}
}
谢谢你的帮助!我希望这对某人有用
祝福 我意识到我可以通过以下方式使用我自己的测线器覆盖DefaultLineMapper将lineNumber值输入MyObject:
import org.springframework.batch.item.file.FlatFileParseException;
导入org.springframework.batch.item.file.LineMapper;
导入org.springframework.batch.item.file.transform.LineTokenizer;
导入org.springframework.beans.factory.initializebean;
导入org.springframework.util.Assert;
导入my.model.MyObject;
公共类MyLineMapper实现LineMapper,初始化bean{
专用LineTokenizer标记器;
私有资源fieldSetMapper fieldSetMapper;
公共MyObject映射行(字符串行、整数行号)引发异常{
试一试{
MyObject r=fieldSetMapper.mapFieldSet(tokenizer.tokenize(line));
//这是修改
r、 设置行号(行号);
返回r;
}
捕获(例外情况除外){
抛出新的FlatFileParseException(“第行:+lineNumber+
,输入=[“+行+”],例如,行,行号);
}
}
public void setLineTokenizer(LineTokenizer标记器){
this.tokenizer=tokenizer;
}
public void setFieldSetMapper(ResourceFieldSetMapper fieldSetMapper){
this.fieldSetMapper=fieldSetMapper;
}
公共无效afterPropertiesSet(){
notNull(标记器,“必须设置LineTokenizer”);
Assert.notNull(fieldSetMapper,“必须设置fieldSetMapper”);
}
}
谢谢你的帮助!我希望这对某人有用
祝福 为什么不将
DefaultLineMapper
子类化,覆盖mapLine
,然后在super.mapLine()
返回的对象上设置行号?由于import
forResourceFieldSetMapper
缺少DefaultLineMapper子类化,此代码不会按原样编译,覆盖mapLine
,然后在super.mapLine()
返回的对象上设置行号。由于ResourceFieldSetMapper
的import
丢失,此代码无法按原样编译。