ItemWriter

ItemWriter 在功能上类似于 ItemReader,但执行的是相反的操作。 资源仍然需要被定位、打开和关闭,但不同之处在于, ItemWriter 是向外写入数据,而不是读取数据。对于数据库或队列而言, 这些操作可能是插入、更新或发送。输出序列化的格式取决于具体的批处理作业。spring-doc.cadn.net.cn

ItemReader 一样, ItemWriter 是一个相当通用的接口,如下面的接口定义所示:spring-doc.cadn.net.cn

public interface ItemWriter<T> {

    void write(Chunk<? extends T> items) throws Exception;

}

readItemReader 上的作用类似,write 提供了 ItemWriter 的基本契约。只要它处于打开状态,就会尝试写入传入的项目列表。由于通常期望将项目“批量”组合成一个块后再输出,因此该接口接受一个项目列表,而不是单个项目。在写入列表之后,可以在从 write 方法返回之前执行任何必要的刷新操作。例如,如果写入到 Hibernate DAO,可以进行多次 write 调用,每个项目一次。然后,writer 可以在返回之前调用 Hibernate 会话上的 flush。请注意,如果块中的所有项目都被 ItemProcessor 过滤掉或在容错步骤处理过程中被跳过,则传递给 write 的块可能为空。实现应优雅地处理空块。spring-doc.cadn.net.cn