6.6.1 The FieldSet(字段集)

当在Spring Batch中使用纯文本文件时, 不管是将其作为输入还是输出, 最重要的一个类就是 FieldSet。许多架构和类库会抽象出一些方法/类来辅助你从文件读取数据, 但是这些方法通常返回 String 或者 String[]数组, 很多时候这确实是些半成品。 而 FieldSet 是Spring Batch中专门用来将文件绑定到字段的抽象。它允许开发者和使用数据库差不多的方式来使用数据输入文件入。 FieldSet在概念上非常类似于Jdbc的 ResultSet。 FieldSet 只需要一个参数: 即token数组 String[]。另外, 您还可以配置字段的名称, 然后就可以像使用 ResultSet 一样, 使用 index 或者 name 都可以取得对应的值:

  1. String[] tokens = new String[]{"foo", "1", "true"};
  2. FieldSet fs = new DefaultFieldSet(tokens);
  3. String name = fs.readString(0);
  4. int value = fs.readInt(1);
  5. boolean booleanValue = fs.readBoolean(2);

FieldSet 接口可以返回很多类型的对象/数据, 如 Date, long, BigDecimal 等。 FieldSet 最大的优势在于,它对文本输入文件 提供了统一的解析。 不是每个批处理作业采用不同的方式进行解析,而一直是一致的, 不论是在处理格式异常引起的错误, 还是在进行简单的数据转换。