MultiResourceItemReader: при инициализации компонента ресурсы не существуют - PullRequest
0 голосов
/ 04 декабря 2018

Сценарий: пакетное задание Spring с 2 шагами:

  1. Тасклет, который загружает CSV-файлы (имена файлов неизвестны до выполнения) в каталог.
  2. Шаг на основе чанка с помощью Reader, которыйнеобходимо прочитать все файлы csv

Задача:

Поскольку имена файлов неизвестны, мы используем PathMatchingResourcePatternResolver.getResources(), чтобы получить resources.

Возвращенноересурсы всегда имеют длину 0, поскольку в каталоге нет файлов при инициализации компонента.

@Bean
Resource[] resources() throws IOException {
    final PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
    final Resource[] resources = resolver.getResources("file:" + destinationDir + "/*.csv");
    return resources;
}

Есть идеи?Заранее спасибо!

1 Ответ

0 голосов
/ 04 декабря 2018

Вы можете сохранить имена файлов внутри JobExecutionContext, находясь на шаге тасклета, а затем использовать эти имена для инициализации своих ресурсов на шаге чанка.

Более подробная информация на Spring Batch Docs: Конфигурирование шага .

Такое позднее связывание в Spring Batch возможно из-за Step Scope Beans.Подробнее об этом можно прочитать здесь .

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