Spring Batch выводит формат файла? - PullRequest
0 голосов
/ 30 мая 2011

В весенних пакетных примерах есть много примеров копирования данных из формата CSV в таблицу DB, таблицу DB в CSV и т. Д. Я хотел бы знать, есть ли способ, с помощью которого пользователь может выбрать конкретное задание, например, скопировать данныеиз CSV-файла, а также укажите формат назначения, т. е. Excel, DB, PDF.Таким образом, формат назначения задания зависит от ввода пользователя .?100100

Спасибо!Тарун Сапра

1 Ответ

1 голос
/ 02 июня 2011

Учитывая, что Spring Batch является пакетной средой, которая не имеет дело с пользовательским вводом, я не уверен, что вы работаете с правильным сценарием здесь. Однако здесь есть несколько вариантов:

  1. Используйте параметр задания и шаг решения, чтобы указать правильную комбинацию ItemReader / ItemWriter. Недостатком этого является то, что вам нужно будет определить шаг для реализации (один для обработки PDF, один для Excel и т. Д.), Однако, поскольку выбор будет сделан только один раз за запуск задания, это будет иметь меньшее влияние на производительность.

  2. В более чистом подходе по-прежнему будет использоваться параметр задания, однако он будет использовать ClassifierCompositeItemWriter для делегирования соответствующему модулю записи. Этот ItemWriter будет настроен с одним делегатом ItemWriter для каждого типа реализации (PDF, Excel и т. Д.) И будет диктовать им на основе реализации настраиваемого интерфейса классификатора. Хотя это более чистый подход с точки зрения конфигурации, он имеет недостаток в оценке каждого отдельного элемента, для которого обрабатывает ItemWriter (это недостаток, если предположить, что весь цикл предназначен для отправки всех элементов одному и тому же ItemWriter за цикл. ).

  3. Наконец, я бы подумал, что теоретически вы сможете использовать концепцию фабрики бинов Spring для внедрения ItemWriter при запуске задания. Для справки, это чисто предположение, и я на самом деле не пробовал это.

Майкл Т Минелла
Автор Pro Spring Batch

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