在春季批处理中使用itemProcessor跳过文件中的不良行

时间:2018-06-27 10:37:12

标签: java spring spring-batch

20180627;PM;ABC;0029;BYX;Technology Inc;;DUMMY;OK;33900;34.3;1162770;CT;;;;;;
;;;;;;;;;;;;;;;;;; //bad line
;;;;;;;;;;;;;;;;;;  //bad line
;;;;;;;;;;;;;;;;;;  //bad line 

有没有办法跳过MyProcessor中没有数据的不良行:

public class MyProcessor implements ItemProcessor<Row, Price> {

    @Override
    public Price process(final Row row) throws Exception {

        if (row == null) {

        }

        //Values for lines in file
        Price scp = new Price();

      //set values

        return scp;
    }

}   

Row对象的值为空。我看到了带有空行的示例,但是在这里我要处理冒号,它实际上是定界符。

我是否必须检查某些字段的有效性并阻止对象的创建和设置?有没有更好的办法?

1 个答案:

答案 0 :(得分:0)

使用PatternMatchingCompositeLineMapper将有效行与无效行分开,并使用自定义FieldSetMapper将无效行映射到名为InvalidLine的对象(仅作为示例)。
在处理阶段,使用CompositeItemProcessor通过自定义InvalidLine传递ItemProcessor对象,然后执行您喜欢的操作。