ClassifierCompositeItemWriter с AsyncItemWriter?
В настоящее время я использую AsyncItemWriter для записи обработанных данных студента в мою таблицу базы данных. Недавно я получил требование записывать в несколько таблиц базы данных на основе критериев (если студент на последнем курсе, также запишите в отдельную таблицу с дополнительными данными).
В настоящее время у меня определены два отдельно работающих компонента AsyncItemWriter. Пробовал использовать CompositeItemWriter, который действительно работает и использует оба делегата для записи в соответствующие таблицы. Теперь я хочу вызвать второго писателя, только если вышеупомянутое условие выполнено.
Я попытался использовать ClassifierCompositeItemWriter с настраиваемой реализацией Classifier для моего класса Student, который должен возвращать CompositeItemWriter, когда студент в прошлогодних критериях удовлетворен, иначе вызывает единственный AsyncItemWriter для хранения данных студента. К сожалению, когда в ClassifierCompositeItemWriter "swrite()
вызывается метод, элементы внутри списка записи относятся к типу FutureTask и наclassify()
вызвать писателя не удается с ClassCastException, так как он не может передать FutureTask в мою модель Student.
К сожалению, в настоящее время у меня нет кода под рукой, но я постарался быть максимально подробным.
1 ответ
Я попытался использовать ClassifierCompositeItemWriter с настраиваемой реализацией Classifier для моего класса Student, который должен возвращать CompositeItemWriter, когда студент в прошлогодних критериях удовлетворен, иначе вызывает единственный AsyncItemWriter для хранения данных студента
Это начинает усложняться без реальной пользы. Я хотел бы сделать это простым и использовать настраиваемый писатель с "если" внутри реализации, соответствующейif the student is in their last year, also write in a separate table with additional data
.