Spring batch SpringBatch-获取FieldSetMapper上的行号

Spring batch SpringBatch-获取FieldSetMapper上的行号,spring-batch,Spring Batch,我需要把行号输入FieldSet映射器。我该怎么做 我想使用线号作为映射器生成的结果对象的字段 谢谢。我认为您可以使用spEL表达式#{fileReader.currentItemCount},但是有用于此目的的SB接口 标记接口,指示项目应具有项目计数 开始吧。通常用于 AbstractItemCountingItemStreamItemReader 我认为您可以使用spEL表达式#{fileReader.currentItemCount},但是有用于此目的的SB接口 标记接口,指示项目应

我需要把行号输入FieldSet映射器。我该怎么做

我想使用线号作为映射器生成的结果对象的字段



谢谢。

我认为您可以使用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”);
}
}
谢谢你的帮助!我希望这对某人有用


祝福

我意识到我可以通过以下方式使用我自己的测线器覆盖DefaultLineMapperlineNumber值输入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
for
ResourceFieldSetMapper
缺少
DefaultLineMapper子类化,此代码不会按原样编译,覆盖
mapLine
,然后在
super.mapLine()
返回的对象上设置行号。由于
ResourceFieldSetMapper
import
丢失,此代码无法按原样编译。