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