当在Spring Batch中使用纯文本文件时, 不管是将其作为输入还是输出, 最重要的一个类就是 FieldSet。许多架构和类库会抽象出一些方法/类来辅助你从文件读取数据, 但是这些方法通常返回 String
或者 String[]
数组, 很多时候这确实是些半成品。 而 FieldSet 是Spring Batch中专门用来将文件绑定到字段的抽象。它允许开发者和使用数据库差不多的方式来使用数据输入文件入。 FieldSet
在概念上非常类似于Jdbc的 ResultSet
。 FieldSet 只需要一个参数: 即token数组 String[]
。另外, 您还可以配置字段的名称, 然后就可以像使用 ResultSet
一样, 使用 index 或者 name 都可以取得对应的值:
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 最大的优势在于,它对文本输入文件 提供了统一的解析。 不是每个批处理作业采用不同的方式进行解析,而一直是一致的, 不论是在处理格式异常引起的错误, 还是在进行简单的数据转换。