首页 > 解决方案 > 在春季批处理中使用 itemProcessor 跳过文件中的错误行

问题描述

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是空值。我看过带有空行的示例,但在这里我处理的是实际上是分隔符的冒号。

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

标签: javaspringspring-batch

解决方案


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


推荐阅读