我使用spring-batch
将大型数据集导入数据库。在ItemProcessor
中准备db对象期间,我想设置一个字段filesHash
,以便我稍后知道导入行来自哪个文件。
问题:如何在ItemProcessor
?
我使用FlatFileItemReader
逐行读取文件内容。不幸的是,它有setResource(resource)
方法,但不提供getter?
链接的问题没有回答这个问题!
答案 0 :(得分:1)
通过实施ResourceAware界面,使您的“物品” 具有资源意识。
public class FileDetailsEntity extends BaseEntity implements ResourceAware {
....
@Override
public void setResource(Resource resource) {
this.fileName=resource.getFilename();
}
}
}
在处理过程中,您将自动获得当前文件名:
public class YourItemProcessor implements ItemProcessor ....{
....
@Override
public FileDetailsEntityTemp process(FileDetailsEntity item) {
// you get the file name by item.getFileName()
...
}
答案 1 :(得分:0)
UPDATE:绝对只需在您的处理器上实现ResourceAware
,让Spring Batch为您完成工作。
来自JavaDoc:
标记接口,指示项目应具有从中读取的Spring资源,并在其上设置。规范示例位于MultiResourceItemReader中,它将在实现此接口的任何项目上设置当前资源。