Вы можете создать конструктор в своем слушателе с файлом и передать ему файл, когда определите шаг.Вот пример:
class MySkipListener implements SkipListener<Integer, Integer> {
private FileWriter fileWriter;
public MySkipListener(File file) throws IOException {
this.fileWriter = new FileWriter(file);
}
// your onSkipInRead method
}
Затем вы передаете файл параметров задания своему слушателю при определении шага:
@Bean
@JobScope
public Step step(@Value("#{jobParameters['file']}") String file) throws IOException {
return stepBuilderFactory.get("step")
.<Integer, Integer>chunk(5)
.reader(itemReader())
.writer(itemWriter())
.listener(new MySkipListener(new File(file)))
.build();
}
Надеюсь, это поможет.