我是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。
答案 0 :(得分:2)
要执行此操作,您应该在ItemProcessor
而不是LineAggregator
中进行过滤。您的ItemProcessor
应该返回null,但不会被写出来。使用LineAggregator
进行过滤在此过程中为时已晚。
您可以在文档(第6.3.2节)中使用ItemProcessor
了解有关过滤记录的详情:http://docs.spring.io/spring-batch/reference/html/readersAndWriters.html