spring batch writer return null在文件中打印null

时间:2014-04-28 17:23:16

标签: spring-batch

我是Spring Batch的新手。 实际上我正在尝试验证编写器中的数据。 所以我在这里得到了来自处理器的Subrogation(pojo类),现在我必须检查它以进行验证 - 如果该对象已经存在于MAP中而不是将该值返回给File; 否则返回该数据。

所以当我在if中返回null时,它会在输出文件中输出null

实际上我想从文件中跳过该记录以删除重复项。

聚合方法:

@Override
public String aggregate(Subrogration subrogration) {

    StringBuilder result = new StringBuilder();

    //StringBuffer sb = new StringBuffer();

    System.out.println("inside aggregator");
        result.append(subrogration.toString());

        logger.info("Subrogration result" + subrogration.toString());
        if(SubrogrationFileTransferTasklet.map.containsKey(subrogration.getGRP_NBR()+subrogration.getSECT_NBR())){
            System.out.println("douplicate value");
            return null;
        }
        else{
                    return result.toString();
        }

}

,文件输出为

9970150000050
997500150000050
900250000050
99865400001000.0
9980250000100
9986520000100
9999050000100
null
01890001000.0
02076010001000.0
0207640001000.0
02076000001000.0
020760001000.0
02076000001000.0
020703010001000.0
02076880001000.0

我不想在我的文件中使用null。

1 个答案:

答案 0 :(得分:2)

要执行此操作,您应该在ItemProcessor而不是LineAggregator中进行过滤。您的ItemProcessor应该返回null,但不会被写出来。使用LineAggregator进行过滤在此过程中为时已晚。

您可以在文档(第6.3.2节)中使用ItemProcessor了解有关过滤记录的详情:http://docs.spring.io/spring-batch/reference/html/readersAndWriters.html