wok*_*kmi 2 java spring spring-batch
我已经使用 SpringBatch 几个月了。我曾经将与执行相关的变量(如页数、项目数、批次的当前位置等)存储到 Bean 中。然后,通过使用, -setter 和 getter将这些 Bean 安装到ItemReader,上。这些 bean 还通过手动同步在线程之间共享。ItemProcessorItemWritersetVar()getVar()
但现在我发现这可能是执行批处理作业的错误方法。安装的 BeanItemReaders无法持久化JobRepository,因此无法记录作业停止和重新启动的状态。所以我还是需要回去使用StepExecution/ JobExecution。我在网上找到的那些例子都是基于 XML 配置,或者是更糟糕的 SpEL 自动连接到 setter 方法。
我纯粹使用 Java Config..是否有 Java 配置或面向 Java 代码的访问方式StepExecution?访问各种类型的最佳实践是什么ExecutionContext?
小智 7
要访问StepExecution和,JobExecution您必须执行。ItemReaderItemProcessorItemWriterStepExecutionListener
例如:
public class MyCustomItemWriter implements ItemWriter<Object>, StepExecutionListener {
private StepExecution stepExecution;
@Override
public void beforeStep(StepExecution stepExecution) {
this.stepExecution = stepExecution;
}
@Override
public ExitStatus afterStep(StepExecution stepExecution) {
return stepExecution.getExitStatus();
}
@Override
public void write(List<? extends Object> list) throws Exception {
if (null == list || list.isEmpty()) {
throw new Exception("Cannot write null or empty list");
}
ExecutionContext stepExecContext = this.stepExecution.getExecutionContext()
ExecutionContext jobExecContext = this.stepExecution.getJobExecution().getExecutionContext();
// TODO: Write your code here
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11929 次 |
| 最近记录: |