Spring пакетная передача динамического имени файла в onSkipInRead - PullRequest
0 голосов
/ 18 марта 2019

Я хочу передать динамическое имя файла в onSkipInRead. пример: public MySkipListener (строковый файл @Value ("# {jobParameters ['file']}")) выдает IOException { bw = новый BufferedWriter (новый FileWriter (файл); System.out.println ("MySkipListener =========>:" + bw); }

  @Override
  public void onSkipInRead(Throwable throwable) {
      if (throwable instanceof FlatFileParseException) {
          FlatFileParseException flatFileParseException = (FlatFileParseException) throwable;
          try {
                bw.write(flatFileParseException.getInput()+"; Step Vérifiez les colonnes !!");
                bw.newLine();
                bw.flush();
          } catch (IOException e) {
              System.err.println("Unable to write skipped line to error file"); }
      }
  }

Спасибо.

1 Ответ

0 голосов
/ 18 марта 2019

Вы можете создать конструктор в своем слушателе с файлом и передать ему файл, когда определите шаг.Вот пример:

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();
}

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...