#spring-batch
#spring-batch
Вопрос:
В процессе использования Spring batch у меня есть требование прочитать файл Excel, заполнить статистику одного из столбцов, а затем использовать значение одного из столбцов, разделенное на статистический результат.Примеры следующие
input:
name price
a 10
b 20
c 30
ouput:
name price proportion
a 10 1/6
b 20 1/3
c 30 1/2
Ответ №1:
Я могу предложить вам выполнить два шага :
- Первый (tasklet), который вычисляет сумму всех цен и регистрирует результат в JobExecutionContext
- И второй (фрагмент), чтобы перечитать файл и записать столбец пропорций с суммой, вычисленной на первом шаге.
Комментарии:
1. Неужели нет другого лучшего решения, чем то, которое вы предложили? Первое, о чем я думаю, это использовать решение, которое вы сказали, но я думаю, что это решение не является оптимальным решением. Поскольку для каждого шага требуются необработанные данные, прочитайте файл дважды или кэшируйте данные на первом шаге. Я хочу использовать CompositeItemProcessor для обработки всех данных на первом процессоре, а затем на следующем процессоре, чтобы мне не приходилось дважды читать файл или кэшировать данные. Но я знаю, что CompositeItemProcessor не такой. Каждый раз обработка данных проходит через все процессоры.