FieldSet

在 Spring Batch 中使用平面文件时,无论用于输入还是输出,最重要的类之一就是 FieldSet。许多架构和库包含用于帮助您从文件中读取的抽象,但它们通常返回 StringString 对象数组。这实际上只完成了一半的工作。FieldSet 是 Spring Batch 用于启用从文件资源绑定字段的抽象。它允许开发人员以与处理数据库输入相同的方式处理文件输入。从概念上讲,FieldSet 类似于 JDBC ResultSetFieldSet 仅需要一个参数:一个 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 最大的优势在于它提供了对平面文件输入的一致解析。它可以保持一致,无论是处理由格式异常引起的错误,还是执行简单的数据转换,而不是每个批处理作业都以潜在的意外方式进行不同的解析。