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