ClassifierCompositeItemWriter с AsyncItemWriter? - PullRequest
0 голосов
/ 17 апреля 2020

В настоящее время я использую AsyncItemWriter , чтобы записать обработанные данные о студентах в таблицу базы данных. Недавно я получил требование записать в несколько таблиц базы данных на основе критериев (если студент учится на последнем курсе, также записать в отдельную таблицу с дополнительными данными).

В настоящее время у меня есть две, отдельно работающих AsyncItemWriter Определенные бины. Попытка использования CompositeItemWriter , который фактически работает и использует оба делегата для записи в соответствующие таблицы. Теперь я хочу вызвать второго автора, только если вышеуказанное условие выполнено.

Я попытался использовать ClassifierCompositeItemWriter с пользовательской реализацией Classifier для моей Студент класс, который должен возвращать CompositeItemWriter , когда ученик соответствует критериям прошлого года, в противном случае вызывает единственный AsyncItemWriter для хранения данных ученика. К сожалению, когда вызывается метод ClassifierCompositeItemWriter write(), элементы в списке записи имеют тип FutureTask и при вызове classify() писатель завершается ошибкой с ClassCastException , так как он не мог отлить FutureTask в мою Student модель.

К сожалению, в настоящее время у меня нет кода под рукой, но я старался быть максимально подробным.

1 Ответ

0 голосов
/ 20 апреля 2020

Я пытался использовать ClassifierCompositeItemWriter с пользовательской реализацией Classifier для моего класса Student, который должен возвращать CompositeItemWriter, когда учащемуся соответствует критерий прошлого года, в противном случае вызывается один AsyncItemWriter для хранения данных студента

Это начинает становиться сложным без реальной выгоды. Я хотел бы сохранить простоту и использовать собственный писатель с «если» внутри реализации, соответствующей if the student is in their last year, also write in a separate table with additional data.

...