【发布时间】:2018-06-23 12:13:54
【问题描述】:
我有一个包含 reader->processor->writer 的 spring batch。
b/w 传递的数据类型为Emp:
class Emp {
iny id;
String name;
EmpTypeEnum empType; // HR, Dev, Tester, etc.
// getters and setters
}
由于从Reader 中的CSV 文件读取简单的批处理数据,Processor & 内部的一些处理和输出 CSV 文件由Writer 写入。
但除了这个输出 CSV 文件,我想生成一个辅助输出文件,它只包含每个 EmpType 的计数,即 HR、Dev 和 Tester 的总数。
我正在考虑仅在 processor 内执行计数,例如:
public class EmpItemProcessor implements ItemProcessor<Emp, Emp> {
int countHr;
int countDev;
int countTester;
@Override
public Person process(final Emp emp) throws Exception {
if (item.getEmpType.equals(EmpTypeEnum.HR) {
countHr++;
} else if // .....
// other processor on emp
return emp;
}
}
但正如你所见,我只能从Processor 返回Emp,那么我怎样才能从处理器传递countHr、countDev 等并使用它来创建辅助文件? p>
请提出建议。如果您认为任何其他方法会更好,请提出建议。
谢谢
【问题讨论】:
-
你好,如果你只想在最后写计数器,你可以创建一个监听器,一旦工作完成,在监听器中,从上下文中检索计数器(你必须更新每个项目处理),然后将其写入文件
标签: java spring spring-boot spring-batch