Spring Batch - прочитайте один раз и напишите дважды

Я новичок в Spring Batch. Мое требование - у меня есть читатель, который получает записи через вызов веб-службы / вызов базы данных, и в настоящее время я записываю эти записи в одну таблицу. Теперь мне нужно, чтобы те же записи (записи, читаемые читателем) нужно было обработать и записать в другую таблицу. Здесь следует отметить, что вторые элементы, которые сохраняются во второй записи, имеют другой тип первой записи.

Мне нужно как ниже

1st Step: - Read items of type A --> Write items of Type A 
2nd Step:-  Read items of type A --> Process to type B ---> Write 10 items of type B

Для этой же работы мне нужно управление транзакциями. Кроме того, на Шаге 2:- Если возможно, я должен использовать данные, которые уже были прочитаны на Шаге 1.

1 ответ

Решение

Spring Batch определяет независимые шаги для обработки. Каждый шаг отвечает за их ввод, обработку и вывод. Из-за этого я бы структурировал работу примерно так:

<job id="myJob">
    <step id="step1" next="step2">
        <tasklet>
            <chunk reader="reader" writer="typeAwriter"/>
        </tasklet>
    </step>
    <step id="step2">
        <tasklet>
            <chunk reader="reader" processor="processor" writer="typeBwriter"/>
        </tasklet>
    </step>
</job>

В описанной выше конфигурации считыватель будет считывателем со ступенчатой ​​областью действия, который считывает данные типа A. TypeAwriter записывает тип A. Процессор - это процессор, который преобразует тип A в тип B. TypeBwriter записывает тип B. Поскольку процессор возвращает a список типа B, typeBwriter должен быть пользовательской реализацией, которая перебирает списки, которые возвращает процессор (typeBwriter будет принимать List<List<TypeB>>).

Другие вопросы по тегам