|
当前版本仍在开发中,尚不被视为稳定版本。最新稳定版请使用 Spring Batch 文档 6.0.2! |
ItemWriter
ItemWriter 在功能上与 ItemReader 类似,但执行的是相反的操作。资源同样需要被定位、打开和关闭,不同之处在于
ItemWriter 负责写出而不是读取。对于数据库或队列来说,这些操作可能体现为插入、更新或发送。输出内容采用何种序列化格式,则取决于具体的批处理 job。
和 ItemReader 一样,ItemWriter 也是一个相当通用的接口,其定义如下:
public interface ItemWriter<T> {
void write(Chunk<? extends T> items) throws Exception;
}
就像 ItemReader 中的 read 一样,write 定义了 ItemWriter 的基础契约。只要 writer 处于打开状态,
它就会尝试把传入的 item 列表写出。由于通常会把多个 item 组合成一个 chunk 再统一输出,因此接口接收的是一个 item 列表,而不是单个 item。
在写出列表之后,如果有必要,可以在 write 方法返回前执行 flush。比如写入 Hibernate DAO 时,可以对每个 item 分别执行写操作,
然后在返回前对 Hibernate session 调用 flush。还要注意,传给 write 的 chunk 可能为空,例如该 chunk 中的所有 item 都被
ItemProcessor 过滤掉了,或者在容错 step 处理中被跳过了。实现类应当能够平稳处理空 chunk。