我的itemReader
在spring批处理中将一个csv记录转换为Consumer
对象。此对象包含一个属性recordType
,该属性为插入或更新。我的itemReader
转换的文件可能包含更新和插入记录的混合。现在,在写入itemWriter
时,我需要根据recordType
属性将Consumer
记录转换为InsertConsumerRecordDTO
或UpdateConsumerRecordDTO
。这意味着我在运行时需要UpdateCustomerItemWriter
或InsertCustomerItemWriter
。
if(record has insert)
Transform `Consumer` object to `InsertCustomerDTO`
use `InsertCustomerItemWriter` and make a REST call;
else
Transform `Consumer` object to `UpdateCustomerDTO`
use `UpdateCustomerItemWriter` and make a REST call
是否可以通过spring batch实现此功能?
1条答案
按热度按时间rryofs0p1#
Spring Batch中的每个面向块的步骤只能有一个
ItemWriter
。您可以实现一个定制的
ItemWriter
,它接受InsertConsumerRecordDTO
和UpdateConsumerRecordDTO
的混合List
(Spring Batch 4)或Chunk
(Spring Batch 5),并分别为每个InsertConsumerRecordDTO
和UpdateConsumerRecordDTO
执行正确的操作。如果这两个DTO类应该有一个公共基类,则可以将其用作
List
/Chunk
的类型。否则,可以使用Object
。