Spring Batch:用一千个令牌解析一个逗号分隔的行

时间:2014-08-04 21:53:45

标签: spring spring-batch

我有一个如下所述的输入文件。

TOKEN1,TOKEN2,TOKEN2,TOKEN2,TOKEN2,TOKEN2,TOKEN2,TOKEN2,TOKEN2,TOKEN2,TOKEN2,TOKEN2,TOKEN2,TOKEN2,TOKEN2,TOKEN2,TOKEN2,TOKEN2,TOKEN2,TOKEN2,TOKEN2,TOKEN2,TOKEN2,TOKEN2,TOKEN2,TOKEN2,TOKEN2,TOKEN2,TOKEN2,TOKEN2,TOKEN2,TOKEN2

此示例数据是一行,其中标记以逗号分隔。

我想知道哪种Mapper可用于此类数据?

由于

1 个答案:

答案 0 :(得分:0)

您可以使用DelimitedLineTokenizer。令牌列表将提供给ItemProcessor。我在下面展示了一段代码片段。

如果每个标记对应于实体中的字段,您还可以设置BeanWrapperFieldSetMapper,它将解析每一行并自动创建该实体的对象。

    public FlatFileItemReader<Feature> reader(String pathToFile, ApplicationContext ctx) {
    FlatFileItemReader<Feature> reader = new FlatFileItemReader<Feature>();
    Resource path = ctx.getResource("file:" + pathToFile);
    reader.setResource(path);
    reader.setLineMapper(new DefaultLineMapper<Feature>() {
        {
            setLineTokenizer(new DelimitedLineTokenizer(
                    DelimitedLineTokenizer.DELIMITER_COMMA) {
                {
                    setNames(new String[] {"token1", "token2", "token3", .... , "tokenx" });
                }
            });
            });
        }
    });
    return reader;
}