FieldSet

在 Spring Batch 中使用平面文件时,无论用于输入还是输出,最重要的类之一是 FieldSet。许多架构和库包含用于帮助您从文件读取的抽象,但它们通常返回一个 String 或一个 String 对象数组。这实际上只完成了一半的工作。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 最大的优势在于它提供了对扁平文件输入的一致解析。与每个批处理作业以潜在的意外方式进行不同解析相比,它可以保持一致,无论是在处理由格式异常引起的错误时,还是在进行简单数据转换时。