如何在ItemProcessor中获取当前资源名称?

时间:2016-07-05 08:01:38

标签: java spring spring-batch

我使用spring-batch将大型数据集导入数据库。在ItemProcessor中准备db对象期间,我想设置一个字段filesHash,以便我稍后知道导入行来自哪个文件。

问题:如何在ItemProcessor

中获取当前资源文件名

我使用FlatFileItemReader逐行读取文件内容。不幸的是,它有setResource(resource)方法,但不提供getter?

链接的问题没有回答这个问题!

2 个答案:

答案 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中,它将在实现此接口的任何项目上设置当前资源。