如何从spring批处理中访问bean集

时间:2016-03-30 10:45:58

标签: java spring spring-batch

如何从writer中检索从reader(我的自定义阅读器)创建的java对象?

由于异常,我必须保留count of the records processedskipped,并且在作业执行后我必须保留所有邮件通知。我不想把它放在execution context中,因为我不需要坚持它。

我可以从阅读器设置一个bean,从编者那里设置autowire并使用它吗?

1 个答案:

答案 0 :(得分:0)

您可以简单地使用相同的类作为reader,writer,然后可以共享实例变量。事实上,你使用相同的对象来做一些事情,例如在' @ afterJob'中实施StepExecutionListener来发送邮件。完成工作后的方法。

如果您的读者和作者拥有简单的代码,这是一种很好的方法。或者,您可以通过让分隔符读取器和编写器类具有实际逻辑将该代码委托给其他类,并且可以将实例变量传递给这些类。 您只需要在配置中定义与读者,编写者和监听器相同的类。

 public class CommitWriter implements ItemWriter<myObject>, ItemReader<myObject> , StepExecutionListener{

private myPojo sharedObject;

//Read method goes here
 public myObjectread() throws Exception{

 }
// Write method goes here
public void write(List<? extends myObject> arg0)
throws Exception {

}


 //After job
 @Override
public ExitStatus afterStep(StepExecution stepExecution) {

}

}