|
当前版本仍在开发中,尚不被视为稳定版本。最新稳定版请使用 Spring Batch 文档 6.0.2! |
FieldSet
在 Spring Batch 中处理平面文件时,不论是输入还是输出,FieldSet 都是最重要的类之一。许多架构和库都提供了帮助你从文件中读取数据的抽象,
但它们通常只是返回一个 String 或一个 String 数组。这实际上只完成了一半工作。FieldSet 是 Spring Batch
为支持从文件资源中绑定字段而提供的抽象。它让开发者能够以非常接近处理数据库输入的方式来处理文件输入。从概念上说,FieldSet 类似于 JDBC 的
ResultSet。FieldSet 只需要一个参数:一个表示各字段 token 的 String 数组。你也可以选择为字段配置名称,
这样字段就可以像 ResultSet 一样按索引或按名称访问,如下例所示:
String[] tokens = new String[]{"foo", "1", "true"};
FieldSet fs = new DefaultFieldSet(tokens);
String name = fs.readString(0);
int value = fs.readInt(1);
boolean booleanValue = fs.readBoolean(2);
FieldSet 接口还提供了更多读取选项,例如 Date、long、BigDecimal 等。FieldSet
最大的优势在于,它为平面文件输入提供了一致的解析方式。这样一来,不同批处理 job 就不会再以各自不同、甚至可能令人意外的方式解析数据;
无论是处理格式异常引发的错误,还是执行简单的数据类型转换,都可以保持一致。